n阶魔方阵c源代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

#define N 12 //N大于或等于三

void uneven()//N为奇数

{

int A[N][N]={0},B[N*N+1],x=0,y=N/2,a,b,n;

for (n=1;n<=N*N;n++)

B[n]=n;

A[x][y]=B[1];

for (n=2;n<=N*N;n++)

{

a=x;

b=y;

x-=1;

y+=1;

if (x==-1) x=N-1;

if (y==N) y=0;

if (A[x][y]!=0) {x=a+1;y=b;}

if (x==N ) x=0;

A[x][y]=B[n];

}

for (x=0;x

{

for (y=0;y

{

printf("%3d ",A[x][y]);

}

printf("\n\n");

}

}

void even()//N为偶数,且能被四整除

{

int a[N][N],n=1,i,j,x=1,y=1;

for (i=0;i

for (j=0;j

{

a[i][j]=n;

n++;

}

for (i=0;i

{

for (j=0;j

{

switch (y)

{

case 1:

case 4:if (x==1 || x==4) a[i][j]=N*N-a[i][j]+1;break;

case 2:

case 3:if (x==2 || x==3) a[i][j]=N*N-a[i][j]+1;break;

default:break;

}

x++;

if (x==5) x=1;

}

y++; if (y==5) y=1;

}

for (i=0;i

{

for (j=0;j

printf("%3d ",a[i][j]);

printf("\n\n");

}

}

void evens()//N为偶数,且不能被四整除

{

int a[N][N],i[N/2][N/2]={0},j[N/2][N/2]={0},m[N/2][N/2]={0},n[N/2][N/2]={0};

int b,d,k,x,y,z;

x=0;y=N/4;

i[x][y]=1;

for (z=2;z<=N*N/4;z++)

{

d=x;

b=y;

x-=1;

y+=1;

if (x==-1) x=N/2-1;

if (y==N/2) y=0;

if (i[x][y]!=0) {x=d+1;y=b;}

if (x==N/2 ) x=0;

i[x][y]=z;

}

x=0;y=N/4;

j[x][y]=N*N/2+1;

for (z=2;z<=N*N/4;z++)

{

d=x;

b=y;

x-=1;

y+=1;

if (x==-1) x=N/2-1;

if (y==N/2) y=0;

if (j[x][y]!=0) {x=d+1;y=b;}

if (x==N/2 ) x=0;

j[x][y]=z+N*N/2;

}

x=0;y=N/4;

m[x][y]=N*N*3/4+1;

for (z=2;z<=N*N/4;z++)

{

d=x;

b=y;

x-=1;

y+=1;

if (x==-1) x=N/2-1;

if (y==N/2) y=0;

if (m[x][y]!=0) {x=d+1;y=b;}

if (x==N/2 ) x=0;

m[x][y]=z+N*N*3/4;

}

x=0;y=N/4;

n[x][y]=N*N/4+1;

for (z=2;z<=N*N/4;z++)

{

d=x;

b=y;

x-=1;

y+=1;

if (x==-1) x=N/2-1;

if (y==N/2) y=0;

if (n[x][y]!=0) {x=d+1;y=b;}

if (x==N/2 ) x=0;

n[x][y]=z+N*N/4;

}

k=(N-2)/4;

for (y=N/4,b=0;b

z=i[N/4][y];

i[N/4][y]=m[N/4][y];

m[N/4][y]=z;

}

for (x=0;x

for (y=0;y

{

if (x==N/4)

continue;

z=i[x][y];

i[x][y]=m[x][y];

m[x][y]=z;

}

for (y=N/4,b=0;b

for (x=0;x

{

z=j[x][y];

j[x][y]=n[x][y];

n[x][y]=z;

}

for (x=0;x

for (y=0;y

a[x][y]=i[x][y];

for (x=0;x

for (y=N/2;y

a[x][y]=j[x][y-N/2];

for (x=N/2;x

for (y=0;y

a[x][y]=m[x-N/2][y];

for (x=N/2;x

for (y=N/2;y

a[x][y]=n[x-N/2][y-N/2]; for (x=0;x

相关文档
最新文档