java

奇数幻方 内容: 把整数1到n 2 (n为奇数)排成一个n×n方阵,使方阵中的每一行、每一列以及对角线上的数之和都相同。这样的方阵(行列数相等的矩阵称为方阵)称为n阶奇数幻方。 研究发现,n阶奇数幻方可以按下列方法生成: 把数1填在第一行的正中间(a[1,n div 2 +1]),然后用一个循环依次填入数2到n 2 。一边填数以便找下一个数应该在的位置,填数按照下面的规律进行: 如果数k填在第i行第j列的格子中(a[i,j]),那么一般情况下,数k+1应填在它的左上方,即a[i-1,j-1]位置上;但是,如果左上方无格子(越界了,即i-1为0或j-1为0),那么就做如下处理:若i-1为0,那么就填在a[n,j-1];若j-1为0,那么就填在a[i-1,n]。如果找到的格子中已填过数了,那么数k+1改填在第k个数的正下方(a[i+1,j])。 输入说明: 一行n,不需要判错n<=11 输出说明: 每行一个组n整数共n行 输入样例: 若题目没有特别说明,则应该以多组测试数据方式读取,或者参考a001。 3 输出样例: 6 1 8 7 5 3 2 9 4 #include<iostream> using namespace std; int main() {  int n,i,j,a[100][100]={0},h,l;  cin>>n;  h=1;l=n/2+1;  a[h][l]=1;  for (i=2;i<=n*n;i++)    {     if (i%n!=1)     {    h–;    if (h==0) h=n; l–; if (l==0) l=n;     }     if (i%n==1)     h++;     a[h][l]=i;    }  for (i=1;i<=n;i++)    {    for (j=1;j<=n;j++)      cout<<a[i][j]<<‘ ‘;    cout<<endl;    }  return 0; }-笔试面试资料

加载更多

提供最优质的资源集合

立即查看 了解详情