美文网首页
拉丁方阵问题 -- python实现

拉丁方阵问题 -- python实现

作者: 雷子_ | 来源:发表于2019-12-20 11:06 被阅读0次

    问题描述

    拉丁方阵是一种n×n的方阵,方阵中恰有n种不同的元素,每种元素恰有n个,而且每种元素在一行和一列中 恰好出现一次。著名数学家和物理学家欧拉使用拉丁字母来作为拉丁方阵里元素的符号,拉丁方阵因此而得名。
    比如:
    1 2 3
    2 3 1
    3 1 2
    问题:怎样构造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')
    

    单循环链表

    class Node:
        """节点"""
    
        def __init__(self, value):
            self.data = value
            self.next = None
    
        def __repr__(self):
            return f'Node: {self.data}'
    
    
    class CircularLinkedList:
        """单循环链表"""
        def __init__(self):
            self.rear = None    # 尾节点
    
        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')
    

    相关文章

      网友评论

          本文标题:拉丁方阵问题 -- python实现

          本文链接:https://www.haomeiwen.com/subject/ebbbnctx.html