我无法理解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]]
谢谢你的建议。你知道吗
算法的输出取决于元素的呈现顺序。例如,它分解为:
这里发生的事情是2抢3,结果只有一场比赛。你知道吗
另一方面,如果2与1匹配,那么3可以与4匹配,得到两个匹配。你知道吗
排序至少在某种程度上解决了这个问题,确保首先使用最小的合适数字。我并不完全清楚这是否足以保证最佳性(尽管可能是这样);这需要更多的思考。你知道吗
只需应用标准的调试技术:使列表越来越小,同时确保输出仍然出乎意料。你知道吗
使用大小为2的列表可以重现这种意外行为。你知道吗
比较[2,1]和[2,3]。你知道吗
另外,使用纸和笔手动运行算法。一定要严格遵循算法。如果你想做一些不同的事情,找出原因和情况。你知道吗
相关问题 更多 >
编程相关推荐