盗版金币编程

题目说明,只有两个人的时候,四号可以得到一切。所以只有三个人的时候,只要三号给他点好处,五号就支持他,四号肯定反对。所以在只有四个人的时候,4号只有一点点支持。有了4号的支持就可以过了,其他人都不好。所以一开始三号五号只要得到一点好处都会支持。所以如果金币分不开,你可以有98,3号和5号分别是1。

以上是自然语言,如果用编程语言,显然,不能用推理。它只能是穷举的,并且可以使用递归函数。想法是这样的:

前提:1。给别人的是1或者0元(原因略)。2.有一个函数find(a),a),其中a代表余数。用来判断剩余人数,提出分配方案的人有什么好处。下面是查找代码:

私有find(a)为整数

dim b为整数

K(a)=1 '我会养活自己

B=0 '反对者人数

如果a=5,那么

find=100

其他

对于i=1到4

如果a+I & lt;那么=5

如果找到(a+i)>1和(I mod 2 = 1) S无条件反对你如果我是奇数你能得到更多的利益。

b=b+1

k(a-i)=0

如果…就会结束

如果…就会结束

接下来我

find=100-b

如果a=1,则

打印“自己去拿:”

打印100-b

打印“其他得到1元的人:”

对于i=2到5

如果k(i)=1,则

打印I

如果…就会结束

接下来我

如果…就会结束

我没试过,应该有问题。。