n阶换方c语言程序,求单偶阶与双偶阶幻方编程思想及其算法!
該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
#include
#define N 100
void oujie(int oushu)
{
int a[N][N]={0},i,j,k=1,n,m;
n=oushu/2;
m=(oushu-2)/4;
for(i=1,j=3*n/2;k<=n*n;)
{
if(i<0)
{ i=i+3*n; continue; }
if(j>=3*n)
{ j=j-3*n; continue; }
if(j<0)
{ j=j+3*n; continue; }
if(a[i][j]!=0)
{
i=i+2*3;
j=j-1*3;
if(i>3*n)
{ i=i-3*n; continue; }
if(j<0)
{ j=j+3*n; continue; }
}
a[i][j]=k++;
i=i-3;
j=j+3;
}
for(i=1;i<3*n;i=i+3)
for(j=1;j<3*n;j=j+3)
{
if(i
a[i-1][j]=1;
else if(i==(3*(m+1)+1)&&j!=(3*(m+1)-2)||i==(3*(m+1)-2)&&j==(3*(m+1)-2))
a[i-1][j]=2;
else a[i-1][j]=3;
}
for(i=1;i<3*n;i=i+3)
for(j=1;j<3*n;j=j+3)
{
if(a[i-1][j]==1)
{
a[i-1][j-1]=4*a[i][j];
a[i-1][j+1]=4*a[i][j]-3;
a[i+1][j-1]=4*a[i][j]-2;
a[i+1][j+1]=4*a[i][j]-1;
}
if(a[i-1][j]==2)
{
a[i-1][j-1]=4*a[i][j]-3;
a[i-1][j+1]=4*a[i][j];
a[i+1][j-1]=4*a[i][j]-2;
a[i+1][j+1]=4*a[i][j]-1;
}
if(a[i-1][j]==3)
{
a[i-1][j-1]=4*a[i][j]-3;
a[i-1][j+1]=4*a[i][j];
a[i+1][j-1]=4*a[i][j]-1;
a[i+1][j+1]=4*a[i][j]-2;
}
}
for(i=0;i<3*n;i=i+1)
{
{
for(j=0;j<3*n;j=j+1)
{
printf("%4d",a[i][j]);
j=j+2;
printf("%4d",a[i][j]);
}
printf("\n");
}
i=i+2;
{
for(j=0;j<3*n;j=j+1)
{
printf("%4d",a[i][j]);
j=j+2;
printf("%4d",a[i][j]);
}
printf("\n");
}
}
}
void jijie(int n)
{
int a[N][N]={0},i,j,k=1;
for(i=0,j=n/2;k<=n*n;)
{
if(i<0)
{ i=i+n; continue; }
if(j>=n)
{ j=j-n; continue; }
if(j<0)
{ j=j+n; continue; }
if(a[i][j]!=0)
{
i=i+2;
j=j-1;
if(i>n)
{ i=i-n; continue; }
if(j<0)
{ j=j+n; continue; }
}
a[i][j]=k++;
i--;
j++;
}
for(i=0;i
{
for(j=0;j
printf("%4d",a[i][j]);
printf("\n");
}
}
main()
{
int n;
printf("偶數階數為4n+2,且階數為3到66之間\n");
printf("請輸入幻方的階數:");
scanf("%d",&n);
if(n%2==0&&n>=4&&n<66&&(n-2)%4==0)
oujie(n);
else if(n%2==1&&n<66)
jijie(n);
else
printf("錯誤的階數!\n");
總結
以上是生活随笔為你收集整理的n阶换方c语言程序,求单偶阶与双偶阶幻方编程思想及其算法!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 教你如何配置双WAN口路由器
- 下一篇: 苏泊尔电饭煲维修方法苏泊尔电饭煲维修网