一.基本问题阐述:
有两个参与者和一个庄家。参与者每人有一式两张卡片,各印有“合作”和“背叛”。参与者各把一张卡片文字面朝下,放在庄家面前。文字面朝下排除了参与者知道对方选择的可能性。然后,庄家翻开两个参与者卡片,根据以下规则支付利益:
一人背叛、一人合作:背叛者得5分(背叛诱惑),合作者0分(受骗支付)。
二人都合作:各得3分(合作报酬)。
二人都背叛:各得1分(背叛惩罚)。
二.求解(要求用C语言或JAVA语言)
1.每个人所能得分的所有情况及可得的最高分和最低分;
2.两个人能得分和的所有情况及最高分和最低分;
3. 比较互相背叛的及单独背叛,合作获分比背叛高还是低.
------解决方案--------------------
import java.util.Scanner;
public class Main
{
/**
* @param args
*/
public static void main(String[] args)
{
Scanner cin = new Scanner(System.in);
int score_1 = 0;
int score_2 = 0;
while(true)
{
System.out.println("我是庄家, 请第一个参与者给我一张牌(hezuo/beipan):");
String in_1 = cin.next();
while(!(in_1.equals("hezuo")||in_1.equals("beipan")))
{
System.out.println("您给的牌不和规则, 不许出千, 请重新给我一张牌:");
in_1 = cin.next();
}
System.out.println("我是庄家, 请第二个参与者给我一张牌(hezuo/beipan):");
String in_2 = cin.next();
while(!(in_2.equals("hezuo")||in_2.equals("beipan")))
{
System.out.println("您给的牌不和规则, 不许出千, 请重新给我一张牌:");
in_2 = cin.next();
}
int s1 = 0; //本轮第一个人得分
int s2 = 0;
if(in_1.equals("beipan")&&in_2.equals("hezuo"))
{
s1 = 5;
}
else if(in_2.equals("beipan")&&in_1.equals("hezuo"))
{
s2 = 5;
}
else if(in_1.equals("hezuo")&&in_2.equals("hezuo"))
{
s1 = s2 =3;
}
else
{
s1 = s2 = 1;
}
score_1 += s1;
score_2 += s2;
System.out.println("本轮游戏结束, 得分如下");
System.out.println("第一个参与者本轮得分:"+s1+",总得分:"+score_1);
System.out.println("第二个参与者本轮得分:"+s2+",总得分:"+score_2);
System.out.println("======================================");
}
}
}