
using namespace stdvoid main()
{
int k,p,q,n,s[19][19]
do{
cout<<"请输入阶数n(n为小于20的正奇数):"
cin>>n
}while(n<1||n>19||n%2==0)
p=n-1
q=(n-1)/2
for(k=1k<=n*nk++)
{
s[p%n][q%n]=k
if(k%n==0) p--
else
{
p++
q++
}
}
cout<<endl<型李<"========阶数为"<<n<<"的魔方为========"<<endl
for(p=0p<np++)
{
for(q=0q<nq++)
{
cout.width(4)
cout<<s[p][q]
}
cout<<endl
}
cout<卜陵迟<"==============================="汪缓<<endl
}
所谓的魔方缺乎尺距阵就是一种特殊的奇数阶方阵:它的行,列,对角线,上的数字之和顷段都要相等,且方阵中的伏高每一个数字都不相等,且数字的范围都在1到n*n之间.我编的程序如下:
#include<stdio.h>
#define N 15
main()
{
int i,j,row,cloum,size,square[N][N],count
clrscr()
printf("please enter the square size(odd &&<=15):\n")
scanf("%d",&size)
while(size%2==0||size>15||size<3)
{
printf("error due to the wrng input!please input it again!\n")
scanf("%d",&size)
}
for(i=0i<sizei++)
for(j=0j<sizej++)
square[i][j]=0
i=0j=(size-1)/2
square[i][j]=1
for(count=2count<=size*sizecount++)
{
row=i-1<0?(size-1):(i-1)
cloum=j-1<0?(size-1):(j-1)
if(square[row][cloum])
i=(++i)%size
else
{i=row
j=j-1<0?(size-1):(j-1)
}
square[i][j]=count
}
printf("the %d square is:\n",size)
for(i=0i<sizei++)
{
for(j=0j<sizej++)
printf("%d",square[i][j])
printf("\n")
}
}
只能求奇数的魔方阵
#define N 20
main()
{
int a[N][N]
int n,i,j,r
scanf("%d",&n)
for(i=0i<Ni++) for(j=0j<Nj++) a[i][j]=0
i=0
j=n/2
a[i][j]=1
for (r=2r<=n*nr++)
if (a[(i+n-1)%n][(j+1)%n]==0)
{i=(i+n-1)%nj=(j+1)%na[i][j]=r}
else
{i=(i+1)%na[i][j]=r}
for(i=0i<ni++)
{
for(j=0j<nj++) printf("%4d",a[i][j])
printf("\n")
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)