问题如下说明: 1-10为10个人,每两个人组成一对掘金,每对都能掘得一定数量的金子。每个人和其他人组合可得到的一定的金子数,下表中每一行、列都代表某人和其他人组合时能得到的金子数。(金子数1-5内的整数随机分配)
人 1 2 3 4 5 6 7 8 9 10 (本行显示缩了,10对应最右面一列,9对应从右面数第二列。。。。。。)
1 0 随机 随机 随机 随机 随机 随机 随机 随机 随机
2 随机 0 随机 随机 随机 随机 随机 随机 随机 随机
3 随机 随机 0 随机 随机 随机 随机 随机 随机 随机
4 随机 随机 随机 0 随机 随机 随机 随机 随机 随机
5 随机 随机 随机 随机 0 随机 随机 随机 随机 随机
6 随机 随机 随机 随机 随机 0 随机 随机 随机 随机
7 随机 随机 随机 随机 随机 随机 0 随机 随机 随机
8 随机 随机 随机 随机 随机 随机 随机 0 随机 随机
9 随机 随机 随机 随机 随机 随机 随机 随机 0 随机
10 随机 随机 随机 随机 随机 随机 随机 随机 随机 0
规则: A,按1-10的顺序逐次进行组合选择,第一个(1)选择的可以任选剩余9人中的一个,且必须选择一名伙伴,第二个可以任选剩余7人中的一个,且必须选择一名伙伴。。。。。。以此类推,直到全部成对组合(5对); B,每次只能1对1组合;
问题:
那种组合方案(5对各自如何组合)可以得到最少或最多的金子?
要求:
A,不使用穷举法,10人只是例子,人数可设为N,偶数;
B,给出具体的算法。
补充说明:
这个问题,可能存在歧义,我再说详细一些:
1-10个号码,按1-10的顺序选择伙伴组合,比如1可以选2-9内任一个,比如选了2,则1-2为一个组合,可以得到一定的金子,金子数量我们可以任意指定为G1,
接下来,第二对选择,由于2已经被1选中,则从3开始(如果1没选2,则从2开始),此时剩余为4,5,6,7,8,9,10.。。。。。。。。。。假如3选了5,则3-5组合得到金子数为G2;
同理,第三对开始选择,从4开始,....................................................................................G3, 接下来,G4, G5, ............................直到所有人组合成功。
其中,G1-G5的值(一个人和其他一人组合的到的金数)我们可以任意随机指定,这个在于探讨算法,而不是具体的值。
最后的最值的问题是在所有可能的组合中找到MAX或min(G1+G2+......G5)
有一点需特别提醒,当先选者选择后面的人时,在满足自己最大的同时,可能消除了后面被选的人得到更多金子的机会(也就是说,如果被选的没有被选中,这个人可能有一个得到更多金子的组合)