我是一个小程序,通过最小的更改,我将按照顺序对列表进行重新排序。我只想显示所做的更改数量。这是我的代码:
n, k = list(map(int, input().split()))
a = list(map(int, input().rstrip().split()))
store_1 = range(a[0],a[0]+(n*k),k)
store_2 = []
for y in store_1:
if y not in a:
store_2.append(y)
print(len(store_2))
此处的程序是输出重新排序列表的最少方法。该列表将按照在'k'上设置的顺序进行重新排序。对于我所做的某些情况,该程序似乎运行良好。例如:
In: 6 2
In: 1 2 5 7 9 85
Out: 2
像这样的情况似乎可行,因为'k'设置为2,所以列表必须遵循2的顺序。因此,可以进行的最小更改是将2 = 3更改为85 = 11。>
但是在某些困难的情况下,我的代码还差得很远。例如:
In: 8 1
In: 1 1 4 5 6 7 11 12
Out: 3
但这是完全错误的输出,因为不可能进行这些更改。可以做出的最佳更改是[2,3,4,5,6,7,8,9]
,其中包含4个更改。
如何使我的代码能够按照顺序有效且正确地重新排列列表?