• 拉丁方阵问题 -- python实现


    问题描述

    拉丁方阵是一种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('
    ')
    

    单循环链表

    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('
    ')
    
  • 相关阅读:
    如何编写测试用例
    bug的合规描述
    Linux常用命令学习
    测试用列设计
    软件质量管理
    测试的分类
    软件工程模型
    软件测试核心概念
    Thinking in C++ 第十三章 动态对象创建
    python urllib
  • 原文地址:https://www.cnblogs.com/thunderLL/p/12072068.html
Copyright © 2020-2023  润新知