码迷,mamicode.com
首页 > 编程语言 > 详细

算法:拉丁方阵(Latin Square)

时间:2019-12-28 16:21:57      阅读:354      评论:0      收藏:0      [点我收藏+]

标签:不同   head   alt   物理学   fallback   pac   row   拉丁字母   情况   

  拉丁方阵(英语:Latin square)是一种 n × n方阵,在这种 n × n 的方阵里,恰有 n 种不同的元素,每一种不同的元素在同一行或同一列里只出现一次。以下是两个拉丁方阵举例:

技术图片

  拉丁方阵有此名称是因为瑞士数学家物理学家欧拉使用拉丁字母来做为拉丁方阵里的元素的符号。

  算法步骤:

  • 在第一行中,数字从 1 到 n 连续存储。
  • 第二行,数字向右移动一列。即 1 现在存储在第二列,依此类推。
  • 在第三行中,数字向右移动两列。即 1 现在存储在第三列,依此类推。
  • 对于其余的行,我们将以相同的方式继续。
 1 package algorithm;
 2 
 3 /**
 4  * 拉丁方阵
 5  */
 6 public class LatinSquare {
 7     /**
 8      * 打印拉丁方阵
 9      * 
10      * @param n 方阵边长
11      */
12     private static void printLatin(int n) {
13         int k = n + 1;
14 
15         // row
16         for (int i = 1; i <= n; i++) {
17             int temp = k;
18 
19             while (temp <= n) {
20                 System.out.print(temp + " ");
21                 temp++;
22             }
23 
24             // 每行后面补 1...k-1
25             for (int j = 1; j < k; j++) {
26                 System.out.print(j + " ");
27             }
28 
29             k--;
30             System.out.println();
31         }
32     }
33 
34     public static void main(String[] args) {
35         int n = 5;
36         printLatin(n);
37     }
38 }

关于拉丁方阵的一些内容:

拉丁方阵的正交

  设有两个阶数相同(为)的拉丁方阵技术图片,其中将所有放置位置相同的元素组合成一个元组,组合成一个新的矩阵技术图片。 当这个新的矩阵技术图片中每一个元素互不相同时,拉丁方阵技术图片和 技术图片是互相正交的。 此时,技术图片技术图片即为一对正交拉丁方。 而在阶数固定的情况下,所有两两正交的拉丁方所成的集合称为正交拉丁方族

  如当 n=3 时,存在两个正交的拉丁方。技术图片 技术图片 

 

拉丁方阵的数量

  可能有不止一种可能的拉丁方形。

  目前,没有公式可以计算 n × n 的拉丁方阵的数量,而当前最精确的公式在当 n 很大时,拉丁方阵的数量的最精确的估计值,其上下界也相差很远。 具体估计公式为: 技术图片

算法:拉丁方阵(Latin Square)

标签:不同   head   alt   物理学   fallback   pac   row   拉丁字母   情况   

原文地址:https://www.cnblogs.com/magic-sea/p/12111763.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!