hdu 1760 A New Tetris Game(搜索博弈)

题目链接:hdu 1760 A New Tetris Game

题意:

给你一个矩阵,0表示可以放格子,现在给你2*2的格子,lele先放,问是否能赢。

题解:

爆搜。具体看代码

 1 #include<bits/stdc++.h>
 2 #define F(i,a,b) for(int i=a;i<=b;++i)
 3 
 4 char mp[60][60];
 5 int n,m;
 6 
 7 int find()
 8 {
 9     F(i,1,n-1)F(j,1,m-1)
10     {
11         if(mp[i][j]=='1'||mp[i][j+1]=='1'||mp[i+1][j]=='1'||mp[i+1][j+1]=='1')continue;
12         mp[i][j]='1',mp[i][j+1]='1',mp[i+1][j]='1',mp[i+1][j+1]='1';
13         int tmp=find();
14         mp[i][j]='0',mp[i][j+1]='0',mp[i+1][j]='0',mp[i+1][j+1]='0';
15         if(!tmp)return 1;//如果后继有一个必败点,则这个局面必赢
16     }
17     return 0;//如果后继一个必败点都没有,则这个局面必输
18 }
19 
20 int main(){
21     while(~scanf("%d%d",&n,&m))
22     {
23         F(i,1,n)scanf("%s",&mp[i][1]);
24         puts(find()?"Yes":"No");
25     }
26     return 0;
27 }
View Code

 

posted @ 2017-03-07 14:29  bin_gege  阅读(166)  评论(0编辑  收藏  举报