第八届蓝桥杯国赛Java b组 填字母游戏

小明经常玩 LOL 游戏上瘾,一次他想挑战K大师,不料K大师说:
“我们先来玩个空格填字母的游戏,要是你不能赢我,就再别玩LOL了”。
K大师在纸上画了一行n个格子,要小明和他交替往其中填入字母。
并且:
1. 轮到某人填的时候,只能在某个空格中填入L或O
2. 谁先让字母组成了“LOL”的字样,谁获胜。
3. 如果所有格子都填满了,仍无法组成LOL,则平局。
小明试验了几次都输了,他很惭愧,希望你能用计算机帮他解开这个谜。
本题的输入格式为:
第一行,数字n(n<10),表示下面有n个初始局面。
接下来,n行,每行一个串,表示开始的局面。
  比如:“******”, 表示有6个空格。
  “L****”,   表示左边是一个字母L,它的右边是4个空格。
要求输出n个数字,表示对每个局面,如果小明先填,当K大师总是用最强着法的时候,小明的最好结果。
1 表示能赢
-1 表示必输
0 表示可以逼平
例如,
输入:
4
***
L**L
L**L***L
L*****L
则程序应该输出:
0
-1
1
1
资源约定:
峰值内存消耗 < 256M
CPU消耗  < 1000ms


请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。
 

package 蓝桥杯学习.填字母;

import java.util.Scanner;
//博弈问题
public class lq {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int n = Integer.valueOf(cin.nextLine());
        while (n-- > 0) {
            System.out.println(dfs(cin.nextLine()));
        }

    }

    private static int dfs(String str) {
        if (str.contains("LOL")) {
            return -1;
        }
        if (!str.contains("*")) {
            return 0;
        }
        int ping = 0;
        char[] cs = str.toCharArray();

        for (int i = 0; i < cs.length; i++) {
            if (cs[i] == '*') {//前提这个位置没有被填
                cs[i] = 'L';//试着填入L
                switch (dfs(new String(cs))) {
                    case -1:
                        return 1;
                    case 0:
                        ping = 1;
            }//如果上面没有return 1 ,那么我们再尝试填入O
                cs[i] = 'O';//试着填入O
                switch (dfs(new String(cs))) {
                    case -1:
                        return 1;
                    case 0:
                        ping = 1;
                }
                //既然这个位置既不能填L,也不能填O,那么说明这个位置不适合填,那么让i++,去尝试填下一个位置
                cs[i] = '*';//回溯,代表我没填
            }
        }
        //如果上面的递归函数结束了,没有return 1 ,那么说明我已经无法赢对手了,那么这是看能不能平手
        if (ping > 0) {
            return 0;
        }
        return -1;


    }
}

猜你喜欢

转载自blog.csdn.net/qq_35394891/article/details/84774908
今日推荐