标题:请教:魔方阵问题
只看楼主
wwe
Rank: 2
来 自:中国安徽
等 级:论坛游民
帖 子:37
专家分:37
注 册:2009-8-3
结帖率:100%
已结贴  问题点数:30 回复次数:1 
请教:魔方阵问题
#include "stdio.h"
main()
{  
   int a[20][20];
   int i=0,j=0,k,n;
   printf("input the number(1-20):");
   scanf("%d",&n);
   a[i][j]=1;
   for(k=2;k<=n*n;k++)
   {
        i=i-1;
        j=j+1;
        if(i==-1) i=n-1;
        if(j==n+1) j=0;
        if(a[i][j]!='\0')
        {
          if(i==n-2) i=0;
          else if(i==n-1) i=1;
          else i=i+2;
          if(j==0) j=n-1;
          else j=j-1;
          a[i][j]=k;
     }
     else a[i][j]=k;
   }
   for(i=0;i<n;i++)
    for(j=0;j<n;j++)
     {
       printf("%d ",a[i][j]);
       if(j==n-1) printf("\n");
     }
}
按照我的思路,随便输入1-20之间的数 n ,接着输出 n 阶魔方阵,结果却是错误的,请各位帮忙看一下,程序错在了什么地方?谢谢!
搜索更多相关主题的帖子: 魔方 
2009-08-08 23:25
soler
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:181
专家分:1077
注 册:2005-7-16
得分:30 
先把算法写在这了。等明天来研究。。。明天我也来试着写一下。还没写过呢。

幻方问题分为奇幻方和偶幻方。奇幻方和偶幻方方阵的布阵规律不同,而偶幻方又分为  
  是4的倍数(如4,8,12,16,20等)和不是4的倍数(如6,10,14,18等)两种。现在  
  就幻方的三种情形的布阵规律分别加以介绍。  
   
  1、奇幻方   N=2*M+1(M=1,2,3,……)的布阵规律  
  a、把1放在N*N方阵中的第一行中间一列,即放在位置为(1,(N+1)/2);  
  b、后一个数存放的行数比前一个数存放的行数减1,若这个行数为0,则取行数为N;  
  c、后一个数存放的列数比前一个数存放的列数加1,若这个列数为N+1,则取列数为1;  
  d、如果前一个数是N的倍数,则后一个数存放的列数不变,而行数加1。  
   
  2、偶幻方N=4*(M=1,2,3,……)的布阵规律  
  先将1至N*N由小到大的顺序,从第一行开是依序填入N*N的方阵中,然后将N*N的方阵以4  
  行4列划分为若干个4*4的小方阵,再将所有4*4小方阵的两个对角线上的数字划掉,之后  
  将所有被划掉的数字重新由大到小的进行排列,然后再将这些数字按排列顺序由N*N方阵  
  的第一行开始,放入被划掉的格子中去。则此时的偶幻方也就布好阵了。  
   
  3、偶幻方N=2*(2*M+1)(M=1,2,3,……)的布阵规律  
  先将N*N的方阵划分为2*2的四个小方阵,设为A,B,C,D,则这四部分都正好是奇行奇  
  列的方阵,设每个小方阵为U*U,其中U=N/2。然后将1至U*U按奇幻方的的方式填入小方  
  阵A中,同理填入U*U+1至U*U*2到B中,填入U*U*2+1至U*U*3到C中,填入U*U*3+1至U*U*4  
  到D中。然后按下列方法交换:  
  a、将A和D的第一列对应位置的元素(出各自的中间一行外)进行交换;  
  b、将A和D的中间一列的中间一行的元素进行交换;  
  c、如果(U+1)/2>2,则将A和D中左边的第二列开始到第(U-1)/2列为止,对应行的数  
  字全部进行交换,同时将B和C右边第一列起连续(U-1)/2-1列对英航的数字也全部进行  
  交换。
2009-08-08 23:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-282061-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.333252 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved