aasdadwe 2022-01-12 10:31 采纳率: 85.7%
浏览 75
已结题

如何用python解决以下问题

有四个整数序列。每个整数取值范围为-50,000,000 ~ 50,000,000(含50,000,000)。编写一个Python 3程序,查找一组由四个数字组成的集合,每个序列都有一个数字,其和为零。
对于任何测试用例,运行时间不能超过1秒。

输入:四行,每行为n个整数序列,n≤1000,用空格隔开。

输出:4个数字,来自4个不同的序列,和为0,或者“不存在”如果这4个数字不存在。如果有多于一组四个数之和为零,则输出任意一组。

比如

img

  • 写回答

1条回答 默认 最新

  • CSDN专家-HGJ 2022-01-12 23:59
    关注

    参考如下代码,可以运行出希望的结果,至于运行时间会不会超时,你测试下看看:

    import numpy as np
    import random
    a = np.array([[int(x) for x in input().split()] for _ in range(4)])
    if any(a.sum(axis=0) == 0):
        s = random.choice(a[:, a.sum(axis=0) == 0].T)
    else:
        s=[0]*a.shape[1]
    print(*s)
    

    运行结果:

    #1
    1 2 3 4   
    2 1 3 5
    0 2 1 4
    -3 -5 2 1
    1 2 0 -3
    #2
    0 1 2 3 
    2 3 4 5
    1 2 3 4 
    4 5 6 7 
    0 0 0 0
    

    按补充解释要求,用product来所有行元素的组合,用如下代码即可:

    from itertools import product
    import random
    a = [[int(x) for x in input().split()] for _ in range(4)]
    b=[x for x in product(*a) if sum(x)==0]
    if len(b)!=0:
        print(*random.choice(b))
    else:
        print('不存在')
    
    

    运行结果:
    -1121284 2077198 -3214647 2258733

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 1月22日
  • 已采纳回答 1月14日
  • 创建了问题 1月12日

悬赏问题

  • ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序
  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题