|
/********************
*@author map
*@email godmap@126.com
*@qq 9842058
********************/
/*******************************************************************************
* 5名海盗分100枚金币,每一枚都是一样的大小和价值。规则如下:
* 1.先是抽签来决定自己的号码(1,2,3,4,5)
* 2.接下来首先由抽得1号的海盗提出分配方案,然后大家5名海盗进行表决,“当且仅当”超过了半数的海盗同意时,按照他的提案进行分配,否则将被处死。
* 3.如果1号被处死,由2号提出分配方案,然后剩下的这4名海盗进行表决,还是“当且仅当”超过了半数的海盗同意时,按照他的提案进行分配,否则将被处死。
* 4.以此类推
* 条件:每名海盗都是极聪明的人,都能很理智的判断、做出选择,他们的目标都是想得到最多的金币。
* 问题:第一名海盗提出怎样的分配方案才能够使自己得到最多的金币?
******************************************************************************/
public class Haidao {
public static void main(String[] args) {
int h1, h2, h3, h4, h5;
int l1=0, l2=0, l3=0, l4=0, l5=0;
int coin = 100;
int i = 0;
for (h1 = 0; h1 <= coin; h1++) {
for (h2 = 0; h2 <= h1; h2++) {
for (h3 = 0; h3 <= h2; h3++) {
for (h4 = 0; h4 <= h3; h4++) {
for (h5 = 0; h5 <= h4; h5++) {
if ((((coin-h1)/2) >= h1) && (h1+h2+h3+h4+h5==coin)) {
if (((h1<=h2 && h1<=h3) || (h1<=h2 && h1<=h4) || (h1<=h2 && h1<=h5) || (h1<=h3 && h1<=h4) || (h1<=h4 && h1<=h5))) {
l1=h1;
l2=h2;
l3=h3;
l4=h4;
l5=h5;
i++;
}
}
}
}
}
}
}
System.out.println("Total " + i + " scheme passed! \nBut only this scheme pirate_1 will cleanup the max, like this:");
System.out.println("海盗1"+"\t"+"海盗2"+"\t"+"海盗3"+"\t"+"海盗4"+"\t"+"海盗5" );
System.out.println(l1+"\t"+l2+"\t"+l3+"\t"+l4+"\t"+l5);
}
}
[ 本帖最后由 godmap 于 2007-5-9 19:09 编辑 ] |
|