可视化讲解:什么是拉丁方阵问题?

前言

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

概念介绍

1. 基本概念

  • 拉丁方阵(英语:Latin square)是一种 n × n 的方阵,在这种 n × n 的方阵里,恰有 n 种不同的元素,每一种不同的元素在同一行或同一列里只出现一次。(注:来源百度百科)

2.相关历史

  • 据说普鲁士的腓特列大帝曾组成一支仪仗队,仪仗队共有36名军官,来自6支部队,每支部队中,上校、中校、少校、上尉、中尉、少尉各一名。他希望这36名军官排成6×6的方阵,方阵的每一行,每一列的6名军官来自不同的部队并且军衔各不相同。令他恼火的是,无论怎么绞尽脑汁也排不成。
  • 后来,他去求教瑞士著名的大数学家欧拉。欧拉发现这是一个不可能完成的任务。
  • 来自n个部队的n种军衔的n×n名军官,如果能排成一个正方形,每一行,每一列的n名军官来自不同的部队并且军衔各不相同,那么就称这个方阵叫正交拉丁方阵。欧拉猜测在
    n=2,6,10,14,18,…
    时,正交拉丁方阵不存在。
  • 然而到了上世纪60年代,人们用计算机造出了n=10的正交拉丁方阵,推翻了欧拉的猜测。现已经知道,除了n=2,6以外,其余的正交拉丁方阵都存在,而且有多种构造的方法。

原理讲解

  • 我们以n=4时,n×n拉丁方阵如下图所示
    在这里插入图片描述

  • 可以看到1, 2, 3, 4这4个数每行每列都有,任意一行一列没有重复的数字.

  • 下面我们就来详细讲解4×4拉丁方阵的实现原理

  1. 第一次,我们将数字1,2,3,4按顺序排列在第一排,此时效果如下图
    在这里插入图片描述
  2. 第二次,我们将数字1,2,3,4循环向右移动一位变为2,3,4,1,然后将其按顺序排列在第二排,此时效果如下图
    在这里插入图片描述
  3. 第三次我们将数字2,3,4,1循环向右移动一位变为3,4,1,2,然后将其按顺序排列在第三排,此时效果如下图
    在这里插入图片描述
  4. 第四次,我们将数字3,4,1,2循环向右移动一位变为4,1,2,3,然后将其按顺序排列在第四排,此时效果如下图
    在这里插入图片描述
  5. 至此,4×4的拉丁方阵实现完毕。想必聪明的你已经想到了拉丁方阵是用单循环链表实现的了。

效果展示

在这里插入图片描述

更多算法学习请关注我的公众号

在这里插入图片描述

说明

  • 在公众号中回复“算法源码”即可获取十大经典算法源码
  • 在公众号中回复“算法书籍”即可获取经典入门算法书籍
  • 在公众号中回复“数据结构”即可获取数据结构相关源码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值