两个lis比较前排序

2024-10-03 21:24:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我无法理解python的这种错误行为。你知道吗

我编写了一个代码,用于检查两个数组中差小于或等于1的组合数。你知道吗

每个元素只能使用一次。你知道吗

c列表用于存储组合以便更好地理解。你知道吗

for k in range(0,len(bs)):
    c.append([])
    for l in range(0,len(gs)) :
       if abs(bs[k]-gs[l])<=1 and bs[k]!=-1000 and gs[l]!=-1000:
           c[k].append(bs[k])
           c[k].append(gs[l])
           bs[k]=-1000
           gs[l]=-1000
           count+=1

对于一些输入(大输入),它会忽略一些组合,但是当我在比较之前对数组进行排序时,它会产生准确的结果。 毕竟它是一台电脑,它不应该错过组合,如果代码是正确的,我觉得它是。你知道吗

样本输入:

4 1 1 3 3 2 5 1 2 1 2 1 1 1 6 1 3 1 1 1 1 1 2 4 1 4 2 2 8 2 1 8 2 4 3 8 1 3 2 3 2 1 3 8 2 3 1 2 5 1 4 1 3 1 3 1 3 1 3 1 7 1 1 3 2 3 7 2 1 4 3 2 1 3 1 4 1 3 1 3 1 3 5 1 8 1 1 3 10 2 1 2

1 1 5 2 13 2 3 6 12 1 13 8 1 16 1 1 1 5 6 2 4 6 4 4 4 2 7 1 7 3 3 9 5 3 1 7 4 1 6 8 2 5 2 3 3 6 8 6 1 8 1 2 5 3 4 11 3 4 8 2 13 2 5 2 7 3 1 8 1 4 2 4 7 7 1 5 7 6 3 9 1 1 3 1 11 5 11 1

无排序产量:74 带排序输出:76你知道吗

无排序组合:即74 [[4, 5], [1, 1], [1, 1], [1, 2], [3, 2], [3, 2], [2, 3], [5, 6], [1, 1], [2, 1], [1, 1], [2, 1], [1, 1], [1, 2], [1, 2], [6, 5], [1, 1], [3, 4], [1, 1], [1, 1], [1, 2], [1, 2], [2, 3], [4, 4], [1, 2], [1, 1], [4, 4], [2, 3], [2, 3], [8, 8], [2, 3], [2, 3], [1, 1], [8, 7], [2, 3], [4, 5], [3, 4], [3, 2], [8, 7], [1, 2], [3, 3], [2, 3], [3, 4], [2, 2], [1, 2], [3, 4], [8, 9], [2, 3], [2, 3], [3, 4], [1, 1], [1, 1], [2, 2], [2, 1], [5, 6], [1, 1], [4, 5], [3, 4], [1, 1], [1, 1], [3, 4], [1, 1], [3, 3], [1, 2], [7, 6], [1, 1], [], [], [3, 3], [], [], [], [], [], [7, 7], [], [], [4, 5], [], [], [], [], [], [4, 5], [], [], [], [5, 6], [], [8, 8], [4, 5], [], [], [], [], [10, 11], [], [], [], []]你知道吗

排序组合:即76 [[1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1], [1, 2], [1, 2], [1, 2], [1, 2], [1, 2], [1, 2], [1, 2], [1, 2], [1, 2], [1, 2], [1, 2], [1, 2], [1, 2], [1, 2], [], [], [], [], [], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [], [], [], [], [], [], [], [], [], [], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [], [], [], [], [], [], [], [], [], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [5, 5], [5, 6], [5, 6], [6, 6], [7, 6], [7, 6], [8, 7], [8, 7], [8, 7], [8, 7], [8, 7], [10,9]]

谢谢你的建议。你知道吗


Tags: and代码ings元素列表forlen
2条回答

算法的输出取决于元素的呈现顺序。例如,它分解为:

bs = [2, 4]
gs = [3, 1]

这里发生的事情是2抢3,结果只有一场比赛。你知道吗

另一方面,如果2与1匹配,那么3可以与4匹配,得到两个匹配。你知道吗

排序至少在某种程度上解决了这个问题,确保首先使用最小的合适数字。我并不完全清楚这是否足以保证最佳性(尽管可能是这样);这需要更多的思考。你知道吗

只需应用标准的调试技术:使列表越来越小,同时确保输出仍然出乎意料。你知道吗

使用大小为2的列表可以重现这种意外行为。你知道吗

比较[2,1]和[2,3]。你知道吗

另外,使用纸和笔手动运行算法。一定要严格遵循算法。如果你想做一些不同的事情,找出原因和情况。你知道吗

相关问题 更多 >