拉丁方阵(英语: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)的更多相关文章

  1. 拉丁方阵问题 -- python实现

    问题描述 拉丁方阵是一种n×n的方阵,方阵中恰有n种不同的元素,每种元素恰有n个,而且每种元素在一行和一列中 恰好出现一次.著名数学家和物理学家欧拉使用拉丁字母来作为拉丁方阵里元素的符号,拉丁方阵因此 ...

  2. LeetCode算法题-Goat Latin Easy(Java实现)

    这是悦乐书的第322次更新,第344篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第192题(顺位题号是824).给出句子S,由空格分隔的单词组成.每个单词仅由小写和大写 ...

  3. LeetCode算法题-Sum of Square Numbers(Java实现)

    这是悦乐书的第276次更新,第292篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第144题(顺位题号是633).给定一个非负整数c,判断是否存在两个整数a和b,使得a的 ...

  4. LeetCode算法题-Valid Perfect Square(Java实现-四种解法)

    这是悦乐书的第209次更新,第221篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第77题(顺位题号是367).给定正整数num,写一个函数,如果num是一个完美的正方形 ...

  5. 基于visual Studio2013解决C语言竞赛题之0525拉丁方阵

     题目

  6. [cf1458C]Latin Square

    维护$n^{2}$个三元组$(x,y,z)$,每一个三元组描述$a_{x,y}=z$ 对于RLDU这四个操作,即将所有三元组的$x$或$y$执行$\pm 1$(模$n$意义下) 对于IC这两个操作,即 ...

  7. 【算法】C语言趣味程序设计编程百例精解

    C语言趣味程序设计编程百例精解 C/C++语言经典.实用.趣味程序设计编程百例精解(1)  https://wenku.baidu.com/view/b9f683c08bd63186bcebbc3c. ...

  8. USACO 6.5 All Latin Squares

    All Latin Squares A square arrangement of numbers 1 2 3 4 5 2 1 4 5 3 3 4 5 1 2 4 5 2 3 1 5 3 1 2 4 ...

  9. [转]100个经典C语言程序(益智类问题)

    目录: 1.绘制余弦曲线 2.绘制余弦曲线和直线 3.绘制圆 4.歌星大奖赛 5.求最大数 6.高次方数的尾数 8.借书方案知多少 9.杨辉三角形 10.数制转换 11.打鱼还是晒网 12.抓交通肇事 ...

随机推荐

  1. 重学VUE——vue 常用指令有哪些?

    一.什么是指令? 在 vue 中,指令以 v- 开头,是一种特殊的自定义行间属性.指令属性的预期值是一个表达式,指令的职责就是:表达式的值改变时,相应地将某些行为应用到DOM上.只有v-for是一个类 ...

  2. 5ucms静态发布卡住解决办法

    找到admin/admin_createhtml.asp文件(admin目录为你的后台管理目录),讲下面这段代码删掉保存即可. <script language="JavaScript ...

  3. Jmeter扩展组件开发(6) - 将响应结果数据显示到查看结果树中

    CODE //用来存储响应数据,目的是将响应结果放到查看结果树当中private String resultData;/** 这个方法就是实现你具体功能逻辑的方法* @param javaSample ...

  4. [源码解析] PyTorch 流水线并行实现 (2)--如何划分模型

    [源码解析] PyTorch 流水线并行实现 (2)--如何划分模型 目录 [源码解析] PyTorch 流水线并行实现 (2)--如何划分模型 0x00 摘要 0x01 问题 0x01 自动平衡 1 ...

  5. JavaScript --css样式

    1.JavaScript显示隐藏控制 隐藏:display:none; 显示:display:block; 参考链接:https://blog.csdn.net/sleepwalker_1992/ar ...

  6. P5644-[PKUWC2018]猎人杀【NTT,分治】

    正题 题目链接:https://www.luogu.com.cn/problem/P5644 题目大意 \(n\)个人,每个人被选中的权重是\(a_i\).每次按照权重选择一个没有死掉的人杀死,求第\ ...

  7. CF1446F-Line Distance【计算几何,树状数组,二分】

    正题 题目链接:https://www.luogu.com.cn/problem/CF1446F 题目大意 给出\(n\)个点,求所有点对构成的直线中与原点距离第\(k\)小的距离 \(2\leq n ...

  8. YbtOJ#763-攻城略池【线段树合并】

    正题 题目链接:http://www.ybtoj.com.cn/problem/763 题目大意 给出\(n\)个点的一棵树,每个\(d_i=0\)的点每秒会产生一个士兵往根节点走,走到一个节点让一个 ...

  9. Python接口自动化测试概念以及意义

    接口定义: 接口普遍有两种意思,一种是API(Application Program Interface),应用编程接口,它是一组定义.程序及协议的集合,通过API接口实现计算机软件之间的相互通信.而 ...

  10. vue成就购物城的功能 (展示增删改查)

    <!DOCTYPE html><html> <!DOCTYPE html> <html> <head> <meta charset=& ...