有5个人有7个数字分别是1234567,每个人每天只可以选其中一个数字,如何让5个人的数加起来每天凑成20,共7天
发布网友
发布时间:2022-05-09 17:44
我来回答
共2个回答
热心网友
时间:2023-10-11 02:34
这个最好用计算机搜索解啊。穷举的话可能性有:
因为每个人选数字都是独立的(区别于博弈),因此需要搜索的解为:
(6!)^6 = 1.3931407 × 10的17次方
这里不是7次方的原因是第一个人的顺序是假定的,即他一定会依次选择7个数字,顺序不重要。
可以看到解的个数接近天文数字,穷举是失败的。
因此肯定用动态规划算法将时间复杂度从指数级的O(2^N)的个数降到O(N^a)。具体怎么写算法我没时间,你去计算机科学区问,估计有人会告诉你。
我仔细考虑了一下,动态规划好像不成,我的想法是先用动态规划求出所有5个数相加能够得到20的组合,然后用分支和界限算法(Branch & Bound)进行筛选。比较复杂啊,想不到简单的办法。
还是说这是一个博弈论的问题吗?
热心网友
时间:2023-10-11 02:35
12467
13457
23456
有这三种组合加起来的和是20
假设选择的是12467 那么我可以数字不变 每个人选的数字发生变化
甲乙丙丁戊
1 2 4 6 7
甲乙丙丁戊
2 4 6 7 1
这样就可以有1*2*3*4*5=120种排列
同理其他两种也有120多种排列 就会有360种组合
不知道有没有跑题哈~