程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> C語言實例之拉丁方陣

C語言實例之拉丁方陣

編輯:關於C

構造 NXN 階的拉丁方陣(2<=N<=9),使方陣中的每一行和每一列中數字1到N只出現一次。如N=4時:

  1 2 3 4

  2 3 4 1

  3 4 1 2

  4 1 2 3

  *問題分析與算法設計

  構造拉丁方陣的方法很多,這裡給出最簡單的一種方法。觀察給出的例子,可以發現:若將每 一行中第一列的數字和最後一列的數字連起來構成一個環,則該環正好是由1到N順序構成;對於第i行,這個環的開始數字為i。按照 此規律可以很容易的寫出程序。下面給出構造6階拉丁方陣的程序。

  *程序說明與注釋

  #include<stdio.h>

  #define N 6 /*確定N值*/

  int main()

  {

  int i,j,k,t;

  printf("The possble Latin Squares of order %d are:\n",N);

  for(j=0;j<N;j++) /*構造N個不同的拉丁方陣*/

  {

  for(i=0;i<N;i++)

  {

  t=(i+j)%N; /*確定該拉丁方陣第i 行的第一個元素的值*/

  for(k=0;k<N;k++) /*按照環的形式輸出該行中的各個元素*/

  printf("%d",(k+t)%N+1);

  printf("\n");

  }

  printf("\n");

  }

  }

  *運行結果

  The possble Latin Squares of order 6 are:

  1 2 3 4 5 6 2 3 4 5 6 1 3 4 5 6 1 2

  2 3 4 5 6 1 3 4 5 6 1 2 4 5 6 1 2 3

  3 4 5 6 1 2 4 5 6 1 2 3 5 6 1 2 3 4

  4 5 6 1 2 3 5 6 1 2 3 4 6 1 2 3 4 5

  5 6 1 2 3 4 6 1 2 3 4 5 1 2 3 4 5 6

  6 1 2 3 4 5 1 2 3 4 5 6 2 3 4 5 6 1

  4 5 6 1 2 3 5 6 1 2 3 4 6 1 2 3 4 5

  5 6 1 2 3 4 6 1 2 3 4 5 1 2 3 4 5 6

  6 1 2 3 4 5 1 2 3 4 5 6 2 3 4 5 6 1

  1 2 3 4 5 6 2 3 4 5 6 1 3 4 5 6 1 2

  2 3 4 5 6 1 3 4 5 6 1 2 4 5 6 1 2 3

  3 4 5 6 1 2 4 5 6 1 2 3 5 6 1 2 3 4

*
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved