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
原文:http://blog.csdn.net/u011925500/article/details/20947083