魔方矩阵的变形,输入一个奇数n,形成一个n*n的矩阵,使得矩阵的每一行,每一列,两个对角线都是奇数。
#include <stdio.h>
#include <stdlib.h>
void CalculateOddMagicSquare(int n)
{
int matrix[50][50];
int nsqr = n * n;
int i=0, j=n/2;
for (int k=1; k<=nsqr; ++k)
{
matrix[i][j] = k;
i--;
j++;
if (k%n == 0)
{
i += 2;
--j;
}
else
{
if (j==n)
j -= n;
else if (i<0)
i += n;
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n-1;j++){
printf("%d ",matrix[i][j]);
}
printf("%d\n",matrix[i][n-1]);
}
}
int main()
{
int n;
while(~scanf("%d",&n)){
CalculateOddMagicSquare(n);
}
return 0;
}
幻方
最新推荐文章于 2024-02-07 21:45:00 发布