Codeforces ER16 C. Magic Odd Square
传送门:http://codeforces.com/contest/710/problem/C
题目翻译
用1~N^2构造N*N的矩阵,使每行每列的数字和为奇数。
题解
机智的构造就可以了。观察发现一共有(N^2+1)/2个奇数,那么构造一个菱形的奇数图案,其他填充偶数即可。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#include<cstdio> using namespace std; const int Maxn=50; int ONum,TNum,n; int main(){ scanf("%d",&n); ONum=1;TNum=2; for (int i=1;i<=(n+1)/2;i++){ for (int j=1;j<=n;j++){ if ((n+1)/2-i+1<=j && j<=(n+1)/2+i-1){ printf("%d ",ONum); ONum+=2; }else{ printf("%d ",TNum); TNum+=2; } } printf("\n"); } for (int i=(n+1)/2+1,t=(n-1)/2;i<=n;i++,t--){ for (int j=1;j<=n;j++){ if ((n+1)/2-t+1<=j && j<=(n+1)/2+t-1){ printf("%d ",ONum); ONum+=2; }else{ printf("%d ",TNum); TNum+=2; } } printf("\n"); } return 0; } |

原文链接:Codeforces ER16 C. Magic Odd Square
WNJXYKの博客 版权所有,转载请注明出处。
还没有任何评论,你来说两句吧!