Sicily/1318. Magic Square
2011-07-27 18:19 Min·zc 阅读(275) 评论(0) 编辑 收藏 举报仔细看题目下面给的hint
#include <iostream>
#include <memory.h>#include <cstdio>
using namespace std;
int ans[16][16];
int main()
{
int n;
int t=0;
while(cin>>n)
{
t++;
if(t!=1)
cout<<endl;
memset(ans,0,sizeof(ans));
int x,y;
x=n/2;
y=0;
int cnt=0;
for(int i=1;i<=n*n;i++)
{
ans[y][x]=i;
cnt++;
if(cnt==n)
{
y++;
cnt=0;
}
else
{
x++;
y--;
}
if(x>=n)
x=0;
if(y<0)
y=n-1;
if(y>=n)
y=0;
}
int sum=0;
for(int i=1;i<=n*n;i++)
sum+=i;
sum/=n;
cout<<"n="<<n<<", sum="<<sum<<endl;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(n<4)
printf(" %d",ans[i][j]);
else if(n<10)
printf(" %2d",ans[i][j]);
else
printf(" %3d",ans[i][j]);
}
cout<<endl;
}
}
}