http://acm.hdu.edu.cn/showproblem.php?pid=2687

#include<stdio.h>

int main()



{

int n,i,k,j,a[11][11],b[11][11];


while(scanf("%d",&n)!=EOF)

{

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

scanf("%d",&a[i][j]);

scanf("%d",&k);

for(i=1;i<=n;i++)

for(j=1;j<=n;j++) //首先求解每循环四次的总和*(k/4)

b[i][j]=(a[i][j]+a[j][n+1-i]+a[n+1-i][n+1-j]+a[n+1-j][i])*(k/4);

if(k%4==0)//再求解k%4的结果

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

b[i][j]+=a[i][j];

else if(k%4==1)

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

b[i][j]+=a[i][j]+a[n+1-j][i];

else if(k%4==2)

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

b[i][j]+=a[i][j]+a[n+1-j][i]+a[n+1-i][n+1-j];

else

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

b[i][j]+=a[i][j]+a[n+1-j][i]+a[n+1-i][n+1-j]+a[j][n+1-i];


for(i=1;i<=n;i++)

{


for(j=1;j<=n;j++)

{

printf("%d",b[i][j]);

if(j<n)

printf(" ");}

printf("\n");

}

}

}
这题只要分清对应的转动位置就能求解!还要注意转动顺序!!!
posted on 2009-04-27 20:41
zhoubaozhong 阅读(295)
评论(0) 编辑 收藏 引用