問題描述
拉丁方陣是一種n×n的方陣,方陣中恰有n種不同的元素油啤,每種元素恰有n個(gè)典徘,而且每種元素在一行和一列中 恰好出現(xiàn)一次。著名數(shù)學(xué)家和物理學(xué)家歐拉使用拉丁字母來作為拉丁方陣?yán)镌氐姆?hào)益咬,拉丁方陣因此而得名逮诲。
比如:
1 2 3
2 3 1
3 1 2
問題:怎樣構(gòu)造N階拉丁方陣?
列表
def solution_list(n):
for y in range(n):
for x in range(n):
num = (y + x) % n + 1
print(f'{num} ', end='')
print('\n')
單循環(huán)鏈表
class Node:
"""節(jié)點(diǎn)"""
def __init__(self, value):
self.data = value
self.next = None
def __repr__(self):
return f'Node: {self.data}'
class CircularLinkedList:
"""單循環(huán)鏈表"""
def __init__(self):
self.rear = None # 尾節(jié)點(diǎn)
def append(self, elem):
"""尾插法"""
temp = Node(elem)
if self.rear is None:
temp.next = temp
self.rear = temp
else:
temp.next = self.rear.next
self.rear.next = temp
self.rear = temp
def solution_circular_linked_list(n):
clist = CircularLinkedList()
for i in range(1, n + 1):
clist.append(i)
cur = clist.rear
while cur.next is not clist.rear:
cur = cur.next
temp = cur
for _ in range(n):
print(f'{temp.data} ', end='')
temp = temp.next
print('\n')