龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

魔方阵的另一种解法

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
魔方阵是指元素为自然数1,2,…N2的N×N,每个元素值都不相等,每行、每列以及主、副对角线上各N个元素之和都相等。如3×3魔方阵: 8 1 6 3 5 7 4 9 2 奇数阶魔方阵的生成方法如下: (1)

魔方阵是指元素为自然数1,2,…N2的N×N,每个元素值都不相等,每行、每列以及主、副对角线上各N个元素之和都相等。如3×3魔方阵:

  8 1 6

  3 5 7

  4 9 2

  奇数阶魔方阵的生成方法如下:

  (1) 第一个位置在第一行正中;

  (2) 新位置应当处于最近一个插入位置右上方,但如右上方位置已超出方阵上边界,则新位置取应选列的最下一个位置,如超出右边界则新位置取应选行的最左一个位置;

  (3) 若最近一个插入元素为N的整倍数,则选下面一行同列上的位置为新位置。

  

  #include

  #define MAXSIZE 15

  int magic[MAXSIZE][MAXSIZE];

  int cur_i=0,cur_j=0;

  main()

  {int count,size=0,i,j;

  while((size%2)==0)

  {

  printf("

enter ODD number:");

  scanf("%d",&size);

  }

  cur_j=(size-1)/2;

  for(count=1;count<=size*size;count++)

  {

  magic[cur_i][cur_j]=count;

  if((count%size)==0)

  {

  cur_i+=1;

  continue;

  }

  cur_i=cur_i-1;

  cur_j=cur_j+1;

  if(cur_i<0)

  cur_i+=size;

  else if(cur_j==size)

  cur_j-=size;

  }

  for(i=0;i

  {

  printf("

");

  for(j=0;j

  printf("%5d",magic[i][j]);

  }

  }

  

  此程序参见《中国计算机软件专业技术资格和水平考试统编辅导教材》(程序员级、高级程序员级)《程序设计第二版》张福炎主编,清华大学出版社,1996年5月第二版,P96

  

精彩图集

赞助商链接