巴什博弈的人机互动练习:
假设有n个物品,你可以选择先手或者后手,由系统随机生成物品的数量(1-100),你一次最少可以取1个,最多3个。先取完者胜!
对于这个问题先分析,如果按照题目要求来,(先选先后手,在生成物品数量),则你一定会输。按照题目来,可以使电脑制定对自己最有利的方案.
参考代码:
import java.util.Random;
import java.util.Scanner;
public class 博弈论 {
public static void main(String[] args) {
Scanner chae=new Scanner(System.in);
System.out.println("比赛规则:选择先手或者后手,系统随机生成糖果数,你每次可以取走1到3个,先取完者胜!");
System.out.println("请选择先手或后手:\n输入“1”,先手;输入“2”,后手");
int shuru=chae.nextInt();
Random numb=new Random(50);
int num=1+numb.nextInt(100);
if(shuru==1){ num=num-num%4;
System.out.println("糖果数为:"+num+"个");
while(num>0){
int x=chae.nextInt();
if(x>=1&&x<=3){
System.out.println("你取走了"+x+"个");
if(num==0) System.out.println("你胜利了!");
int k=4-x;
System.out.println("电脑取走了"+k+"个");
if((num-k-x)==0) {System.out.println("电脑胜利了!");
break;}
num=num-4;
System.out.println("还剩余"+num+"个");}
else
System.out.println("你输的数字不符合规则请重新输入!");
continue;
}}
else if(shuru==2){
System.out.println("糖果数为:"+num+"个");
int x=num%4;
num=num-num%4;
System.out.println("电脑取走了"+x+"个,还剩下"+num+"个");}
while(num>0){
int x=chae.nextInt();
if(x>=1&&x<=3){
System.out.println("你取走了"+x+"个");
if(num==0) System.out.println("你胜利了!");
int k=4-x;
System.out.print("电脑取走了"+k+"个,");
if((num-4)==0) {System.out.println("电脑胜利了!");
break;}
num=num-4;
System.out.println("还剩余"+num+"个");}
else
System.out.println("你输的数字不符合规则请重新输入!");
continue;}
chae.close();
}
}