Prolog 人工智能语言中文论坛---打造优质Prolog学习交流园地

一个供Prolog爱好者学习与交流的地方


您没有登录。 请登录注册

求编程思路:带战斗力的海盗分金币问题

浏览上一个主题 浏览下一个主题 向下  留言 [第1页/共1页]

1 求编程思路:带战斗力的海盗分金币问题 于 周五 八月 23, 2013 5:17 am

现有100名海盗,这些海盗的战斗力分别是1、2、3、4、……、100。
战斗力高的当然能打赢战斗力低的,比如,100可以干掉99,也可以干掉50+49,也可以干掉1+2+3+4+5……只要合计战斗力比不上对方,再多的人也没用。
同等战斗力下,人数多的能打赢人数少的。比如,6打不过3+2+1,20打不过10+4+6。
同等战斗力同等人数下,战斗力最高的人在哪边,哪边就能赢。比如20+10可以干掉16+14。
现在他们要要瓜分100枚金币。从战斗力100的人先提出方案。
反对派的战力如果胜于支持派(提案者也属于支持派),提案者就要被扔下海里喂鲨鱼,然后让剩下来战斗力最高的人继续提案,直到支持派的实力足以战胜反对派,那么方案将获得通过。

还有两个重要假设(抄自Mercury Liao的帖子):

1. 所有海盗都是追求本身利益极大化的,也就是说对任何一位海盗来说,A议案和B议案比较,如果自己能从A议案获得的金币多于B议案,那肯定支持A议案而不支持B议案。并且,获得0枚金币也好过被丢进海里喂鲨鱼。
(如果某海盗P从A议案得到的金子与B议案一样多,而A议案是目前最强战斗力的海盗提出的议案,那海盗P会投反对票,因为海盗都乐于看到比自己凶狠强悍的同伴被丢下海。)

2. 所有海盗相互之间都知道彼此是"极其聪明"的(看来这个行业门槛很高哈哈),这意味着对任意两个海盗A和B,A知道轮到B时B会提怎样的分配案,而B也知道A知道轮到B时B会如何提案。

问:如果你是战斗力100的那个家伙,你会提出怎样的方案?

如果要写一个Prolog程序解决,该如何着手?

查阅用户资料
原来海盗题还有升级版呀!

毒酒滴冻鸭 写道::现有100名海盗,这些海盗的战斗力分别是1、2、3、4、……、100。
战斗力高的当然能打赢战斗力低的,比如,100可以干掉99,也可以干掉50+49,也可以干掉1+2+3+4+5……只要合计战斗力比不上对方,再多的人也没用。
同等战斗力下,人数多的能打赢人数少的。比如,6打不过3+2+1,20打不过10+4+6。
同等战斗力同等人数下,战斗力最高的人在哪边,哪边就能赢。比如20+10可以干掉16+14。
现在他们要要瓜分100枚金币。从战斗力100的人先提出方案。
反对派的战力如果胜于支持派(提案者也属于支持派),提案者就要被扔下海里喂鲨鱼,然后让剩下来战斗力最高的人继续提案,直到支持派的实力足以战胜反对派,那么方案将获得通过。

还有两个重要假设(抄自Mercury Liao的帖子):

1. 所有海盗都是追求本身利益极大化的,也就是说对任何一位海盗来说,A议案和B议案比较,如果自己能从A议案获得的金币多于B议案,那肯定支持A议案而不支持B议案。并且,获得0枚金币也好过被丢进海里喂鲨鱼。
(如果某海盗P从A议案得到的金子与B议案一样多,而A议案是目前最强战斗力的海盗提出的议案,那海盗P会投反对票,因为海盗都乐于看到比自己凶狠强悍的同伴被丢下海。)

2. 所有海盗相互之间都知道彼此是"极其聪明"的(看来这个行业门槛很高哈哈),这意味着对任意两个海盗A和B,A知道轮到B时B会提怎样的分配案,而B也知道A知道轮到B时B会如何提案。

问:如果你是战斗力100的那个家伙,你会提出怎样的方案?

如果要写一个Prolog程序解决,该如何着手?

查阅用户资料 http://prolog.longluntan.net

浏览上一个主题 浏览下一个主题 返回页首  留言 [第1页/共1页]

您在这个论坛的权限:
不能在这个论坛回复主题