用一个程序实现n*n魔方矩阵中,每一行、每一列、每一对角线上的元素之和相等。
矩阵规律:
本程序只适合基数,解释如下:
N 为奇数时,此题中N设为5
(1) 将1放在第一行中间一列;
(2) 从2开始直到n×n止各数依次按下列规则存放:
按 45°方向行走,如向右上
每一个数存放的行比前一个数的行数减1,列数加1
(3) 如果行列范围超出矩阵范围,则回绕。
例如1在第1行,则2应放在最下一行,列数同样加1;
(4) 如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面。
[cpp] view plain copy
#include
int main()
{
int a[100][100],x;/*初始化*/
int i,j,m,n,temp;
printf("输出魔方矩阵n=");
scanf("%d",&x);
while(x)
{
if(!(x%2))
{
printf("你输入了偶数,很遗憾本程序将退出");
return 0;
}
else
{
for(i=0;i
for(j=0;j
a[i][j]=0;
i=0;
j=x/2;
a[i][j]=1;
for(temp=2;temp<=x*x;temp++)
{
m=i;
n=j;
i--;
j++;
if(i<0)
i=x-1;
if(j>=x)
j=0;
if(a[i][j]!=0)
{
i=m+1;
j=n;
}
a[i][j]=temp;
}
}
for(i=0;i
{
for(j=0;j
printf("%4d",a[i][j]);
printf("\n");
}
printf("输出魔方矩阵n=");
scanf("%d",&x);
}
return 0;
}
比如说这个矩阵是A
num = find(mean(A,2)==A(:,1))
这个可以