程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> 魔方陣的另一種解法

魔方陣的另一種解法

編輯:C語言基礎知識
    魔方陣是指元素為自然數1,2,…N2的N×N,每個元素值都不相等,每行、每列以及主、副對角線上各N個元素之和都相等。如3×3魔方陣:
  8 1 6
  3 5 7
  4 9 2
  奇數階魔方陣的生成方法如下:
  (1) 第一個位置在第一行正中;
  (2) 新位置應當處於最近一個插入位置右上方,但如右上方位置已超出方陣上邊界,則新位置取應選列的最下一個位置,如超出右邊界則新位置取應選行的最左一個位置;
  (3) 若最近一個插入元素為N的整倍數,則選下面一行同列上的位置為新位置。
  
  #include <stdio.h>
  #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<size;i++)
  {
  printf(" ");
  for(j=0;j<size;j++)
  printf("%5d",magic[i][j]);
  }
  }
  
  此程序參見《中國計算機軟件專業技術資格和水平考試統編輔導教材》(程序員級、高級程序員級)《程序設計第二版》張福炎主編,清華大學出版社,1996年5月第二版,P96
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved