gpt4 book ai didi

python - 生成带有约束的大量(可能 30)的排列

转载 作者:太空宇宙 更新时间:2023-11-03 21:39:27 26 4
gpt4 key购买 nike

我有最可能的数字列表(1 到 30)。我需要以这样的方式排列列表,使得两个连续元素之间的绝对差不超过2或3或4,并且所有连续元素的绝对差之和最小。

我尝试生成范围最多为 10 和 11 的列表的所有可能排列,然后根据成本值对它们进行排序,但对于较大的数字,它花费的时间太长。需要很长时间才能获得 30 个号码的列表。

有什么方法可以在生成排列本身的同时执行约束吗?

目前我正在使用 python 的 itertools 库来生成排列。

非常感谢任何帮助!谢谢

编辑 1:这是我在 10 和 12 这样的小数字上得到的结果。

排列数组 -> 成本(成本是两个连续元素之间的绝对差之和)

  1. 10 个号码

    [1,3,5,2,4,6,8,10,7,9]20

    [2,4,1,3,5,7,9,6,8,10]20

  2. 12 份。

    [1,3,5,2,4,6,8,11,9,7,10,12]25

    [1,3,5,7,10,12,9,11,8,6,4,2]25

我需要排列 30 个这样的数字,其中 2 <= 差异 <= 4 并且总成本最小。

最佳答案

无论采用何种实现方法,计算大小为 30 的列表的所有排列都是不可能的,因为总共有 30 个排列!排列。

在我看来,您需要的排列可以简单地通过使用 arr.sort() 对给定列表进行排序,然后计算连续元素之间的差异来实现。我错过了什么吗?

关于python - 生成带有约束的大量(可能 30)的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52990024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com