Python 有没有办法把数字的范围放在一个每个数字的差值大于x的列表中?
我正在写一个代码,接受两个输入n和k。 n是数字的最大范围。 k是我们想要用来把n个数字放在一起的最小值。 如果您无法理解,请注意: 该代码获得两个输入n和k:Python 有没有办法把数字的范围放在一个每个数字的差值大于x的列表中?,python,python-3.x,list,algorithm,for-loop,Python,Python 3.x,List,Algorithm,For Loop,我正在写一个代码,接受两个输入n和k。 n是数字的最大范围。 k是我们想要用来把n个数字放在一起的最小值。 如果您无法理解,请注意: 该代码获得两个输入n和k: n, k = [int(a) for a in input().split()] 例如,n=5和k=2。 我想对1到5(n)的数字进行排序,使它们之间的差值大于2(k),如果条件不适合我们的n打印“不可能”。 例如,如果n=2和k=2,那么它们的差值无论如何都将小于2(k) 我写道: n, k = [int(a) for a in i
n, k = [int(a) for a in input().split()]
例如,n=5和k=2。
我想对1到5(n)的数字进行排序,使它们之间的差值大于2(k),如果条件不适合我们的n打印“不可能”。
例如,如果n=2和k=2,那么它们的差值无论如何都将小于2(k)
我写道:
n, k = [int(a) for a in input().split()]
list = []
for i in range(n+1, 1):
if i - (i-2) >= k:
list.append(i)
print(list)
elif n <= k:
print("Impossible")
对于n=2和k=2:
Impossible
但是它不起作用,我很困惑,在这方面有什么函数或任何东西可以帮助我吗?您的代码“不起作用”,因为您的if
语句没有做任何有用的事情:
if i - (i-2) >= k:
进行代数运算以简化此操作:
if 2 >= k:
这只是对输入值进行几次测试
用铅笔和纸工作一会儿。如何安排从1到n的数字,使差异尽可能小?看看你之前发布的例子:那里的模式是什么?例如,将其扩展为8和9个数字
找到那个模式。这一个,一般的解决方案将引导你立即找到一个解决方案,在可能的情况下,其他一切都是“不可能的”
另一种可能是尝试所有可能的安排(使用itertools.permutation
)并检查它们是否都有解决方案
第三是生成解决方案,在遇到死胡同时回溯。这需要一些额外的工作来学习递归,或者通过迭代获得相同的效果
这能让你继续吗?你能给我一个关于itertools.permutations如何工作的例子吗?能给我一个itertools.permutations的例子吗?查找教程信息是你的责任。请重复一遍。堆栈溢出不是用来替代现有教程的。您是否进行过任何调试?我建议您阅读。对于范围(n+1,1)中的I,您的循环
,
永远不会执行。请检查范围功能的工作方式。
if 2 >= k: