题目链接: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 }