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 阅读(291)
评论(0) 编辑 收藏 引用