魔方阵算法是怎么解出来的??
算法我知道.
谁能告诉我是怎么解出来的???
麻烦少少,其实你在网上也可以找到些,种类繁多。
奇数用的是常用的斜线填数法
偶数的算法是:
当n为4的倍数时:采用对称元素交换法。
首先把数1-n^2按行从上至下,从左至右填人方阵的n×n格。然后,把方阵的所有4 ×4子方阵中的两对角线上位置上的数固定下来不动;所有其它位置上的数关于方阵中心作对称交换,也就是把元素a(i,j)与元素a(n 1-i,n 1-j)的值交换。
当n为非4倍数的偶数(即4m 2形)时:首先把大方阵分解为4个奇数(2m 1阶)子方阵。
上述奇数阶魔方给分解的4个子方阵对应赋值,上左子方最小(i),下右子次小(i v),下左子方最大(i 3v),上右子方次大(i 2v),即4个子方阵对应元素相差v,其中v=n*n/4,然后作相应的元素交换:
a(i,j)与a(i u,j)在同一列做对应交换(jn-t 2)
a(t,1)与a(t u,1);a(t,t)与a(t u,t)两对元素交换
其中u=n/2,t=(n 2)/4
我写的程序:(比较傻的方法,因为昨天太晚了不想优化了:P)
include
#define N 100
void main()
{
void n1(int n);
void n2(int n);
void n3(int n);
int n;
printf("please input n:");
scanf("%d",&n);
printf(" ");
if((n%2)!=0)
n1(n);
else if((n%4)==0)
n2(n);
else
n3(n);
getch();
}
void n1(int n)
{
int i,j,count=0,num[N][N];
for(i=0,j=(n-1)/2;count=n)
j-=n;
}
count=0;
for(i=0;i=m)
j-=m;
}
for(i=m,j=(m-1)/2 m;count=2*m)
j-=m;
}
for(i=0,j=(m-1)/2 m;count=2*m)
j-=m;
}
for(i=m,j=(m-1)/2;count=m)
j-=m;
}
for(i=0;in-v 1;j )
{
t=num[i][j];
num[i][j]=num[i m][j];
num[i m][j]=t;
}
for(j=n-v 2;j{
t=num[i][j];
num[i][j]=num[i m][j];
num[i m][j]=t;
}
}
t=num[v-1][0];
num[v-1][0]=num[v m-1][0];
num[v m-1][0]=t;
t=num[v-1][v-1];
num[v-1][v-1]=num[v m-1][v-1];
num[v m-1][v-1]=t;
count=0;
for(i=0;ifor(j=0;j {
printf("]",num[i][j]);
count ;
if(count%n==0)
printf(" ");
}
}。
问:有谁会用电脑版全英文的 PHOTO SHOP教我一下好吗我电脑技术很笨😔
答:应该跟中文的差不多,就是工具栏是英文的,大概的翻译一下就差不多了详情>>
问:美图秀秀电脑版的文字里,有个网络字体,突然之间没了,哪里可以下载到?
答:直接更新软件就可以了,不用下载详情>>