标题:填字母游戏小明经常玩 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

代码中每一步都做了详细的注释,所以不过多的解释了。做了两道回溯的题,感觉呢好像很套路的样子。无非就是,先试探一下,如果我这样做了,对手面对剩下的局面是否能赢,再用if判断一下,结果就很容易看出来了。之前一听到博弈,就觉得好高深的样子。现在貌似有了一知半解,觉得很有趣。神奇的计算机啊~

package dibajie;import java.util.Scanner;/** 采用的方法:博弈+递归+回溯* 1. 轮到某人填的时候,只能在某个空格中填入L或O2. 谁先让字母组成了“LOL”的字样,谁获胜。3. 如果所有格子都填满了,仍无法组成LOL,则平局。1 表示能赢-1 表示必输0 表示可以逼平*/
public class LOL {private static int fun(char[] arr) {// 判断出口// 如果当我拿到字符串的时候,对手已经写好了“LOL” 我必输无疑// 当我拿到字符串,已经没有空格了,那就是平局// 在不平局,也不能是必输无疑的时候,找方法看看我能不能赢String s = new String(arr);if (s.contains("LOL")) {return -1;}if (s.contains("*") == false) {return 0;}boolean flag_pingju = false;for (int i = 0; i < arr.length; i++) {if (arr[i] == '*') {try {//先把L写进去,试探一下。如果对手必输,那我们就赢arr[i] = 'L';if (fun(arr) == -1)return 1;if (fun(arr) == 0){flag_pingju = true;}//再把O写进去,试探一下,同上 arr[i] = 'O';if (fun(arr) == -1)return 1;if (fun(arr) == 0){flag_pingju = true;}} finally {// 使用try——finally包围起来的好处是:无论在try模块是否有return 都会执行finally里面的句子//回溯arr[i] = '*';}}}if (flag_pingju == true) {// 如果对方可以吧局面逼平,那么我来尝试是否可以莹return 0;} else {return -1;}}static int get_result(String s) {char arr[] = s.toCharArray();return fun(arr);}public static void main(String[] args) {Scanner sc = new Scanner(System.in);int num = sc.nextInt();sc.nextLine();String[] arr_s=new String [num];for (int i = 0; i < num; i++) {String s = sc.nextLine();arr_s[i]=s;}for (int i = 0; i <num; i++) {System.out.println(get_result(arr_s[i]));}}}

蓝桥杯:填字母游戏(第八届决赛javaB第五题)——博弈+递归+回溯相关推荐

  1. 蓝桥杯 填字母游戏(博弈论)

    小明经常玩 LOL 游戏上瘾,一次他想挑战K大师,不料K大师说: "我们先来玩个空格填字母的游戏,要是你不能赢我,就再别玩LOL了". K大师在纸上画了一行n个格子,要小明和他交替 ...

  2. 蓝桥杯 填数字游戏 20分。

    小明经常玩 LOL 游戏上瘾,一次他想挑战K大师,不料K大师说: "我们先来玩个空格填字母的游戏,要是你不能赢我,就再别玩LOL了". K大师在纸上画了一行n个格子,要小明和他交替 ...

  3. 蓝桥杯2014年省赛[第五届]-JavaB组赛题解析

    参考蓝桥杯官网给出的赛题和官方给出的代码. 蓝桥杯官方讲解视频:https://www.lanqiao.cn/courses/2737 时间:4小时 A.武功秘籍[填空] 1.题目描述 小明到X山洞探 ...

  4. 蓝桥杯——瓷砖样式(第八届决赛)

    标题:磁砖样式 小明家的一面装饰墙原来是 3*10 的小方格. 现在手头有一批刚好能盖住2个小方格的长方形瓷砖. 瓷砖只有两种颜色:黄色和橙色. 小明想知道,对于这么简陋的原料,可以贴出多少种不同的花 ...

  5. 2015年第六届蓝桥杯C/C++ A组国赛 —— 第五题:切开字符串

    标题:切开字符串 Pear有一个字符串,不过他希望把它切成两段. 这是一个长度为N(<=10^5)的字符串. Pear希望选择一个位置,把字符串不重复不遗漏地切成两段,长度分别是t和N-t(这两 ...

  6. 青少年蓝桥杯_2020_steam考试_中级组_第五题

    直接上代码: M = int(input()) # M代表的是位数begin = (10 ** M) // 10 end = "9" * Mcounter = 0 char =

  7. 2013年第四届蓝桥杯C/C++ A组国赛 —— 第五题:网络寻路

    标题:网络寻路 X 国的一个网络使用若干条线路连接若干个节点.节点间的通信是双向的.某重要数据包,为了安全起见,必须恰好被转发两次到达目的地.该包可能在任意一个节点产生,我们需要知道该网络中一共有多少 ...

  8. 蓝桥杯——第九届C语言B组第五题:x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机;

    x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机; (1)对于这道题摔手机测试题呢!也就是求它的最优解;我一开始想到这道题的解法呢!是二分解,但你往里面具体的深入的看题,它是一个巨 ...

  9. 2017年第八届蓝桥杯 JavaB组国赛 第五题 填字母游戏

    标题:填字母游戏 小明经常玩 LOL 游戏上瘾,一次他想挑战K大师,不料K大师说: "我们先来玩个空格填字母的游戏,要是你不能赢我,就再别玩LOL了". K大师在纸上画了一行n个格 ...

  10. 2017年第八届蓝桥杯C/C++ A组国赛 —— 第四题:填字母游戏

    标题:填字母游戏 小明经常玩 LOL 游戏上瘾,一次他想挑战K大师,不料K大师说: "我们先来玩个空格填字母的游戏,要是你不能赢我,就再别玩LOL了". K大师在纸上画了一行n个格 ...

最新文章

  1. Android --- RecycleView 中默认选择第一个 item,点击第 2 个 item 时改变其字体样式,其余的 item 的字体样式恢复默认
  2. 【thymeleaf】【SpringBoot】Thymeleaf 获取.properties中的配置项变量
  3. LeetCode-Populating Next Right Pointers in Each Node-填充结点的右指针-二叉树递归
  4. python列表keys函数_字典常用函数(clear、get、items、keys、values、pop)
  5. linux 0755,linux audit审计(7-1)--读懂audit日志
  6. mysql怎么获得权限_mysql怎么给用户加权限
  7. JavaScript 引擎 V8 新机制:JIT-less
  8. 台达伺服控制器接线图_伺服电机如何接线图
  9. SketchUp 有哪些实用的插件?
  10. ORACLE 查询表空间使用情况
  11. 解决微信网页授权多个域名(大于两个)
  12. PowerVR SDK工具包21.1版新亮点一览,特别增加光线追踪代码示例
  13. 竞价推广跑oCPC不起量怎么办?
  14. 不当程序员,你会干什么
  15. python微信头像_Python玩微信——头像组字
  16. 百度AI学习第一天_调用API接口通用步骤
  17. OpenCart之特色商品(Featured)模块教程
  18. onscripter For windows/MAC/Linux V3中文版
  19. 揭秘中医养生之道,中药世家达人教你从喝茶开始养生
  20. 服务程序使用OutputDebugString,DbgView接收不到调试信息问题

热门文章

  1. 关于u盘文件或目录损坏且无法读取的解决方法
  2. 【Unity编辑器扩展】Unity发布资源到商店流程Unity Asset Store Publish
  3. 基本的 DBus 偵錯技巧
  4. 搜狗浏览器怎么打开html文件在哪里,搜狗浏览器的文件菜单打开文件在哪
  5. 从全班同学的成绩中找出最高成绩(遍历一位数组)
  6. 什么是论文查重报告?
  7. python自动化运维博客_python自动化运维记录
  8. 用PLSQL查询Oracle数据库某字段的本年数,上年同期数,同比
  9. 每日小结(就不平衡问题探讨)
  10. MSP430F5529-基于ATK-IMU901角度传感器在UART的串口通信于数据显示