hdu 1760 DFS+博弈
0代表可放 1带表不能放 每次放一个2*2的方块 不能放者败
如果先手必胜则输出Yes
必胜态:从当前状态所能到达的状态中存在一个必败态
必败态:从当前状态所能达到的状态全部是必胜态
Sample Input
4 4
0000
0000
0000
0000
4 4
0000
0010
0100
0000
Sample Output
Yes
No
1 # include <iostream> 2 # include <cstdio> 3 # include <cstring> 4 # include <algorithm> 5 # include <string> 6 # include <cmath> 7 # include <queue> 8 # include <list> 9 # define LL long long 10 using namespace std ; 11 12 char str[50][50]; 13 int p[50][50]; 14 int n,m; 15 int dfs() 16 { 17 int i,j,flag; 18 flag = 0; 19 for(i = 0;i < n-1;i ++) 20 { 21 for(j = 0;j < m-1;j ++) 22 { 23 if(p[i][j] == 0&&p[i+1][j] == 0&&p[i][j+1] == 0&&p[i+1][j+1] == 0) 24 { 25 p[i][j] = p[i+1][j] = p[i][j+1] = p[i+1][j+1] = 1; 26 if(dfs() == 0) //子状态存在必败态 27 flag = 1; 28 p[i][j] = p[i+1][j] = p[i][j+1] = p[i+1][j+1] = 0; 29 } 30 } 31 } 32 if(flag) 33 return 1; 34 else 35 return 0; 36 } 37 int main() 38 { 39 int i,j; 40 while(scanf("%d%d",&n,&m)!=EOF) 41 { 42 for(i = 0; i < n; i ++) 43 scanf("%s",str[i]); 44 for(i = 0; i < n; i ++) 45 { 46 for(j = 0; j < m; j ++) 47 { 48 if(str[i][j] == '0') 49 p[i][j] = 0; 50 else 51 p[i][j] = 1; 52 } 53 } 54 if(dfs()) 55 printf("Yes\n"); 56 else 57 printf("No\n"); 58 } 59 return 0; 60 }
View Code
转载于:https://www.cnblogs.com/mengchunchen/p/4855208.html
hdu 1760 DFS+博弈相关推荐
- hdu 1760 A New Tetris Game(搜索博弈)
题目链接:hdu 1760 A New Tetris Game 题意: 给你一个矩阵,0表示可以放格子,现在给你2*2的格子,lele先放,问是否能赢. 题解: 爆搜.具体看代码 1 #include ...
- HDU 1564 简单博弈 水
n*n棋盘,初始左上角有一个石头,每次放只能在相邻的四个位置之一,不能操作者输. 如果以初始石头编号为1作为后手,那么对于每次先手胜的情况其最后一步的四周的编号必定是奇数,且此时编号为偶数,而对于一个 ...
- hdu 4751(dfs染色)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4751 思路:构建新图,对于那些两点连双向边的,忽略,然后其余的都连双向边,于是在新图中,连边的点是能不 ...
- hdu 3560(dfs判环)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3560 思路:dfs判环,这里成环的条件是环中的每个点的出度和入度都为1,因此dfs的时候只须判断的相连 ...
- hdu 1849 nim博弈
http://acm.hdu.edu.cn/showproblem.php?pid=1849 Nim博弈 算法分析: Nim游戏模型:有三堆石子,分别含有a.b.c个石子.两人轮流从某一堆中取任意多的 ...
- HDU 2212 DFS (伪·DFS)
链接 : http://acm.hdu.edu.cn/showproblem.php?pid=2212 本来是想练下DFS的,结果被题目标题坑了(HDU也搞标题党?),更坑的是题还这么水 直接输出四个 ...
- hdu 1175 DFS连连看
题意:中文题就不说了. 思路:DFS,关键是那个转折大于两次就不行的情况怎么深搜,可以枚举递归起始点的四个方向,如果在DFS中的方向K和递归中的不一样而且还满足深搜条件,那么转折次数就加一. 这道题W ...
- poj 1564 Sum It Up | zoj 1711 | hdu 1548 (dfs + 剪枝 or 判重)
Sum It Up Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Sub ...
- hdu 2516 FIB博弈模型
题目来源: http://acm.hdu.edu.cn/showproblem.php?pid=2516 分析: 当石子个数为 fabonacii 数时, 为必败态. 代码如下: LL fib[60] ...
最新文章
- Algs4-1.3.33一个双向队列Deque-双向链表实现
- Erlang--热更新
- 在脚本中调用psql如何自动输入密码
- leetcode C++ 4. 寻找两个有序数组的中位数 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log
- 如何在大学和工作后让自己逐渐变强?
- Java-Web机试练习题一、后台管理系统——管理员管理模块
- ---WebCam网络摄像头9 usb dirver
- java反射 获取局部变量_Java反射:如何获取变量的名称?
- 单选按钮带文字_一分钟教会你用Word添加单选框和复选框
- axure原件 总是丢失_Axure实现提示文本单击显示后自动消失的效果
- 获取referer中的请求参数_Servlet获取AJAX POST请求中参数以form data和request payload形式传输的方法...
- 设置虚拟机上的redis可以被windows的环境下的python访问连接
- 在Java中使用Jedis的测试案例
- c语言如何读文件,如何正确用C语言读取文件
- 智能AI文章伪原创工具免费使用注意事项与推荐
- html 画 斜线表头,HTML 斜线 表头
- 带你实现完整的视频弹幕系统
- 基于vue添加刻度线比例尺
- 三星电视机dns服务器维护,4招解救三星智能电视看视频卡顿问题
- C++STL之<set>和<map>
热门文章
- (IOS)BaiduFM 程序分析
- cocos2dx-3.2 运行第一个android程序
- RHive的安装和用法
- sqlserver调用msxml3.dll中的xmlhttp对象
- [冷枫推荐]:数据库操作,内外联查询,分组查询,嵌套查询,交叉查询,多表查询,语句小结。...
- 2021-04-04 CPU缓存一致性 MESI协议
- (229)DPU加速数据处理
- (85)FPGA约束有哪些-面试必问(九)(第17天)
- 水经注叠加cad_如何下载等高线并在CAD中与卫星影像叠加
- Python 语法糖