爱问知识人 爱问教育 医院库

魔方阵算法是怎么解出来的??

首页

魔方阵算法是怎么解出来的??

算法我知道. 
谁能告诉我是怎么解出来的???

提交回答

全部答案

    2018-04-29 12:37:55
  •   麻烦少少,其实你在网上也可以找到些,种类繁多。 

    奇数用的是常用的斜线填数法

    偶数的算法是:
    当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;i for(j=0;j {
    printf("]",num[i][j]);
    count ;
    if(count%n==0)
    printf(" ");
    }
    }。

    心***

    2018-04-29 12:37:55

类似问题

换一换

相关推荐

正在加载...
最新资料 热门专题 热点推荐
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 181-200
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):