Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有办法把数字的范围放在一个每个数字的差值大于x的列表中?_Python_Python 3.x_List_Algorithm_For Loop - Fatal编程技术网

Python 有没有办法把数字的范围放在一个每个数字的差值大于x的列表中?

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。 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 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: