欢迎来到天天文库
浏览记录
ID:50510480
大小:37.52 KB
页数:3页
时间:2020-03-10
《山东科技大学ojt题之魔方阵.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、魔方阵TimeLimit:1Sec MemoryLimit:16MBSubmit:803 Solved:225[Submit][Status][WebBoard]Description所谓N阶魔方阵,是一个N*N的方阵,其元素由1到N^2组成,且方阵每行每列以及对角线的元素和相等。如三阶魔方阵:816357492魔方阵的规律如下: 从1~N*N的各个数依次如下规则存放: (1)1在第一行中间一列; (2)每一个数存放的行比前一个数的行数减一,列数加一(如上的三阶方阵5在4的上一行,后一列); (3)如果上一个数在第一行,则下一个数在最后一行,列数加一;
2、 (4)如果上一个数在最后一列,则下一个数在第一列,行数减一; (5)如果按上述规则确定的位置已经有数,或上一个数在第一行第N列,则下一个数放在上一个数的正下方。Input输入包含多组数据,每组为一个小于100的正奇数。Output对于每个输入的N,输出N阶魔方阵;两组数据之间用一个空行分隔。方阵中每行每两个数之间有一个空格,行首和行末没有多余的空格。SampleInput3SampleOutput816357492HINTAppendCode#include #include inta[101][101]={0}; int
3、i,j,k; longn,m; intyd() { if(i<1) i=n; if(i>n) i=1; if(j<1) j=n; if(j>n) j=1; } intmain() { while(scanf("%ld",&n)!=EOF) { memset(a,0,sizeof(a)); a[1][n/2+1]=1; m=n*n; i=1;j=n/2+1; for(k=2;k<=m;k++)
4、 { if(i==1&&j==n) { i++; a[i][j]=k; continue; } if(i==1) { i=n; j++; } elseif(j==n) { i--; j=1; } else { i=i-1; j=j+1; }
5、 if(a[i][j]==0) a[i][j]=k; else { i=i+1; j=j-1; i++; a[i][j]=k; } } for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(j==1) printf("%ld",a[i][j]); else printf("%ld",a[i][
6、j]); } printf(""); } printf(""); } return0; }
此文档下载收益归作者所有