package a;
/*博弈树取球博弈问题*/
public class MyA {
// 判定程序,当前剩余球数目=x
static boolean f(int x) {
int[] op = { 1, 3, 7, 8 };
//逐一判断这4种操作,如果可行就用这种操作
for (int i = 0; i < op.length; i++) {
if (x >= op[i]) {
if (f(x - op[i]) == false) //对手进行判断
return true; // 对方必输,则己方必赢
}
}
return false; // 无论怎样走棋,对方总是必赢,则己方必输
}
public static void main(String[] args) {
//动态规划:已经计算好的子问题存储起来,以后直接取用
//动态缓冲的方法。可以提高效率。
// System.out.println(f(100));
// System.out.println(f(5-1));
// System.out.println(f(5-3));
System.out.println(f(20));
// System.out.println(f(2));
}
}
true