c语言解魔方程序,请哪位牛人告诉我怎样用C语言程序复原3阶魔方的
對,先要了解算法最好給你個吧,不過是有限階的(用vc做的)#include<stdio.h>voidmain(){inti,j,n,k,u,t,m,x,y,a[100][100];printf("pleaseinputn:");scanf("%d",&n);printf("\n");if(n>2&&(n%2)!=0){for(i=0;i<n;i++)for(j=0;j<n;j++)a[i][j]=0;j=(n-1)/2;i=0;a[i][j]=1;for(k=2;k<=n*n;k++){i-=1;j+=1;if(i<0&&j>n-1){i=i+2;j=j-1;}else{if(i<0)i=n-1;if(j>n-1)j=0;}if(a[i][j]!=0){i+=2;j-=1;a[i][j]=k;}elsea[i][j]=k;}for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%-4d",a[i][j]);printf("\n");}}elseif(n>2&&(n%4)==2){for(i=0;i<n;i++)for(j=0;j<n;j++)a[i][j]=0;m=(n-2)/4;//n=4m+2;u=n/2;//u為子矩陣行數或列數t=(n+2)/4;//t為A的中間行j=t-1;i=0;a[i][j]=1;for(k=2;k<=u*u;k++){i-=1;j+=1;if(i<0&&j>u-1){i=i+2;j=j-1;}else{if(i<0)i=u-1;if(j>u-1)j=0;}if(a[i][j]!=0){i+=2;j-=1;a[i][j]=k;}elsea[i][j]=k;}j=t-1+u;i=u;a[i][j]=1+u*u;for(k=u*u+2;k<=2*u*u;k++){i-=1;j+=1;if(i<u&&j>u-1+u){i=i+2;j=j-1;}else{if(i<u)i=u-1+u;if(j>u-1+u)j=u;}if(a[i][j]!=0){i+=2;j-=1;a[i][j]=k;}elsea[i][j]=k;}j=t-1+u;i=0;a[i][j]=1+2*u*u;for(k=2*u*u+2;k<=3*u*u;k++){i-=1;j+=1;if(i<0&&j>u-1+u){i=i+2;j=j-1;}else{if(i<0)i=u-1;if(j>u-1+u)j=u;}if(a[i][j]!=0){i+=2;j-=1;a[i][j]=k;}elsea[i][j]=k;}j=t-1;i=u;a[i][j]=1+3*u*u;for(k=3*u*u+2;k<=4*u*u;k++){i-=1;j+=1;if(i<u&&j>u-1){i=i+2;j=j-1;}else{if(i<u)i=u-1+u;if(j>u-1)j=0;}if(a[i][j]!=0){i+=2;j-=1;a[i][j]=k;}elsea[i][j]=k;}for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%-4d",a[i][j]);printf("\n");}printf("\n");for(i=0;i<u;i++)for(j=0;j<m;j++)if(i!=t-1){y=a[i][j];a[i][j]=a[i+u][j];a[i+u][j]=y;}x=t-1;for(j=0;j<m;j++){y=a[t-1][x];a[t-1][x]=a[t-1+u][x];a[t-1+u][x]=y;x++;}for(j=n-1;j>n-1-(m-1);j--)for(i=0;i<u;i++){y=a[i][j];a[i][j]=a[i+u][j];a[i+u][j]=y;}for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%-4d",a[i][j]);printf("\n");}}elseif(n>2&&n%4==0){k=1;for(i=0;i<n;i++)for(j=0;j<n;j++){a[i][j]=k;k++;}x=n-1;for(j=0;j<n/2;j++,x--){for(i=0;i<n;i++)if(i%4!=j%4&&(i+j)%4!=3){t=a[i][j];a[i][j]=a[i][x];a[i][x]=t;}}for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%-4d",a[i][j]);printf("\n");}printf("\n");x=n-1;for(i=0;i<n/2;i++,x--){for(j=0;j<n;j++)if(i%4!=j%4&&(i+j)%4!=3){t=a[i][j];a[i][j]=a[x][j];a[x][j]=t;}}for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%-4d",a[i][j]);printf("\n");}}elseprintf("輸入錯誤\n");system("pause...");}
閱讀全文 >
總結
以上是生活随笔為你收集整理的c语言解魔方程序,请哪位牛人告诉我怎样用C语言程序复原3阶魔方的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推荐尽快升级:苹果 iOS 16.3.1
- 下一篇: 苹果iOS/iPadOS 16.3.1正