python怎样生成拉丁方?

https://baike.baidu.com/item/... 拉丁方的概念
简单的说就是某一变量在其所处的任意行或任意列中,只出现一次。
image.png
请问下这类问题的思路是什么?谢谢

阅读 2.1k
1 个回答

拉丁方问题似乎是一个NP完全问题,就我查到的资料而言人类似乎并没有一个能在多项式时间内得到所有拉丁方阵的解法,当n很大时连拉丁方阵的数量的最精确的估算的上下界相差都很远。
如果只要求生成一个的话:

def create_latin_square(n: int, start_el: int=1):
    row = [i for i in range(1, n+1)]
    row = row[start_el-1:] + row[:start_el-1]
    return [row[i:] + row[:i] for i in range(n)]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏