当前位置: 首页 > article >正文

笔试-二维数组2

应用

现有M(1<=M<=10)个端口组,每个端口组是长度为N(1<=N<=100),元素均为整数。如果这些端口组间存在2个及以上的元素相同,则认为端口组可以关联合并;若可以关联合并,请用二位数组表示输出结果。其中,组内相同元素仅保留一个,从小到大排序;组外顺序保持输入顺序。

实现

M = int(input("请输入端口组个数M:"))
portgroups = []

for i in range(0, M):

    pg = []
    string = input("请输入端口组的整数值,以空格分隔:").split()   

    for j in string:
        pg.append(int(j))

    portgroups.append(pg)
# 二维数组
print(f"初始二维数组为:{portgroups}")


def associate(list1, list2):
    
    same_element_num = 0

    for i in range(0, len(list1)):
        for j in range(0, len(list2)):
            if list1[i] == list2[j]:
                same_element_num += 1

    if same_element_num >= 2:
        # 合并、去重
        a = list(set(list1 + list2))
        # 排序
        b = sorted(a)
        # print(f"{list1}、{list2}相关联,结果为{b}")
        return b
    # else:
    #     print(f"{list1}、{list2}不相关联")


def integrate(portgroups):

    for i in range(0, len(portgroups)):
        for j in range(i+1, len(portgroups)):
            # 由于后面将个别列表置空了,所以增加判断,减少计算量
            if portgroups[i] and portgroups[j]:
                
                pg_associated = associate(portgroups[i], portgroups[j])

                if pg_associated:
                    # 原二维数组的第i行列表被更换为关联列表
                    portgroups[i] = pg_associated
                    # 原二维数组的第j行列表更换为空列表
                    portgroups[j] = []
                    # 把整合后的、新的二维数组作为参数,再放进该函数里执行
                    integrate(portgroups)
                    # print(f"更改后的二维数组为:{portgroups}")


    new_portgroups = []

    for i in range(0, len(portgroups)):
        if portgroups[i]:
            new_portgroups.append(portgroups[i])

    return new_portgroups


print(f"整合后的数组为:{integrate(portgroups)}")
请输入端口组个数M:6
请输入端口组的整数值,以空格分隔:10
请输入端口组的整数值,以空格分隔:4 2 1
请输入端口组的整数值,以空格分隔:9
请输入端口组的整数值,以空格分隔:3 6 9 2
请输入端口组的整数值,以空格分隔:6 3 4
请输入端口组的整数值,以空格分隔:8
初始二维数组为:[[10], [4, 2, 1], [9], [3, 6, 9, 2], [6, 3, 4], [8]]
整合后的数组为:[[10], [1, 2, 3, 4, 6, 9], [9], [8]]

http://www.kler.cn/a/520465.html

相关文章:

  • 深入探讨数据库索引类型:B-tree、Hash、GIN与GiST的对比与应用
  • 在AlarmLinux系统中安装KeyDB
  • 01绪论 + 递归+分治+搜索+回溯+原码反码补码+进制+位运算+位图(D2_刷题练习)
  • JVM深入学习(二)
  • Effective C++ 规则50:了解 new 和 delete 的合理替换时机
  • convnext 网络结构简介
  • 想品客老师的第六天:函数
  • 论文阅读(四):混合贝叶斯和混合回归方法推断基因网络的比较
  • Docker快速部署高效照片管理系统LibrePhotos搭建私有云相册
  • HarmonyOS:创建应用静态快捷方式
  • k8s支持自定义field-selector spec.hostNetwork过滤
  • [MoeCTF 2022]ezhtml
  • 2014年蓝桥杯第五届CC++大学B组真题及代码
  • 【Postman接口测试】接口用例设计实战—以聚合数据的新闻头条接口为例
  • pytorch卷积的入门操作
  • 深入理解Pytest中的Setup和Teardown
  • LLM大模型推理中的常见数字
  • Windows上通过Git Bash激活Anaconda
  • 【算法】图解面试笔试热点二叉树相关算法题汇总
  • 人工智能:从基础到前沿