主题:幻方矩阵(如九宫格)
#include<iostream.h>
#include<iomanip.h>
#define N 100
int main()
{
int a[N][N],n;
cout<<"请输入魔方阶数n= "<<endl;
cin>>n;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
a[i][j]=0;
if(!(n%2))
{
cout<<"魔方阶数输入不正确,程序结束。"<<endl;
return 0;
}
int p,q;
p=0,q=(n-1)/2;
a[0][q]=1;
for(i=2;i<=n*n;i++)
{
p=(p-1+n)%n;
q=(q-1+n)%n;
while(a[p][q]>0)
{
p=(p+2)%n;
q=(q+1)%n;
}
a[p][q]=i;
}
cout<<"魔幻方阵输出为:"<<endl;
for(i=0;i<n;i++)
{
for(int j=0;j<n;j++)
cout<<setw(4)<<a[i][j];
cout<<endl;
}
return 1;
}
只输入奇数
如:
请输入魔方阶数n=
3
魔幻方阵输出为:
6 1 8
7 5 3
2 9 4
以下部分没看懂,跪求指点:
for(i=2;i<=n*n;i++)
{
p=(p-1+n)%n;
q=(q-1+n)%n;
while(a[p][q]>0)
{
p=(p+2)%n;
q=(q+1)%n;
}
a[p][q]=i;
}