日期:2014-05-20  浏览次数:20723 次

箱子里取苹果数量,谁拿最后一个苹果则谁输,请算法思路。。。。
各位大牛们,有一个题目:
1、有一箱苹果,数目可以自己设定;
2、两个人来抽取苹果数量,一个是玩家,另外一个是电脑;
3、两人随机决定拿苹果的先后顺序;
4、每人每轮只可以拿1、3、5或者8个苹果;
5、谁拿到最后一个苹果则输;

问:应该怎么设定电脑拿苹果的算法?小弟是个初学者,望各位大牛们解答
------解决方案--------------------
import java.util.Scanner;

/**
 * @author Android_iPhone@CSDN
 */
public class TakeApples {
    /**
     * @param args Command-Line Arguments
     */
    public static void main(final String[] args) {
        System.out.print("Please input total number of apples:");
        leftNumberOfApples = DEFAULT_VALUE_0;
        do {
            try {
                leftNumberOfApples = (new Scanner(System.in)).nextInt();
            } catch (Exception e) {
                leftNumberOfApples = DEFAULT_VALUE_0;
            }
        } while (leftNumberOfApples <= DEFAULT_VALUE_0);

        gameStart(randomBoolean());
    } // main

    /**
     * @param youTakeFirst [youTakeFirst(true)] or [computerTakeFirst(false)]
     * @return [COMPUTER_WIN(true)] or [YOU_WIN(false)]
     */
    public static boolean gameStart(final boolean youTakeFirst) {
        boolean yourTurn = youTakeFirst;
        do {
            if (!gameOver()) {
                if (yourTurn) { youTake(); }
            } else {
                System.out.println("You Win!");
                return YOU_WIN;
            }
            if (!gameOver()) {
                computerTake();
                yourTurn = true;
            } else {
                System.out.println("Computer Win!");
                return COMPUTER_WIN;
            }
        } while(true);
    } // gameStart

    /**
     * @return [GameOver(true)] or [GameIsNotOver(false)]
     */
    private static boolean gameOver() {
        return (leftNumberOfApples <= DEFAULT_VALUE_0);
    } // gameOver

    /***/
    private static void youTake() {
        System.out.print("Please input number of apples you take:");
        int takeNumberOfApples = DEFAULT_VALUE_0;
        do {
            try {
                if (debugMode) {
                    takeNumberOfApples = randomInt(
                            RANDOM_LOWER_BOUND,
                            RANDOM_UPPER_BOUND);
                } else {
                    takeNumberOfApples = (new Scanner(System.in)).nextInt();