标签:any main uil aced HERE get more images hdu
http://acm.hdu.edu.cn/status.php?user=MekakuCityActors&pid=1045&status=5
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 14308 Accepted Submission(s): 8668
1 #include <stdio.h> 2 #include <string.h> 3 #include <algorithm> 4 #include<iostream> 5 using namespace std; 6 char Map[5][5]; 7 int res; 8 int n; 9 /** 10 判断是否成立 11 */ 12 bool judge(int x,int y){ 13 if(Map[x][y]!=‘.‘)return false; //X.S都不可以放 14 for(int i=x-1;i>=0;i--){//判断点的上方 15 if(Map[i][y]==‘X‘)break; 16 if(Map[i][y]==‘O‘)return false; 17 } 18 for(int i=y-1;i>=0;i--){//判断点的左方 19 if(Map[x][i]==‘X‘)break; 20 if(Map[x][i]==‘O‘)return false; 21 } 22 return true; 23 } 24 /** 25 DFS 26 */ 27 void DFS(int x,int y,int tot){ 28 if(x==n&&y==0){ //已经搜索了n行,求最大值 29 res=max(res,tot); 30 return; 31 } 32 if(y==n){ //这一行已经求完,从下一行第一列重新开始 33 DFS(x+1,0,tot); 34 return; 35 } 36 for(int i=y;i<n;i++){ 37 if(judge(x,i)){ 38 Map[x][i]=‘O‘; 39 DFS(x,i+1,tot+1); 40 Map[x][i]=‘.‘; 41 } 42 } 43 DFS(x+1,0,tot);//上一行搜索结束,从下一行重新开始 44 } 45 int main(){ 46 while(scanf("%d",&n),n){ 47 res=0; 48 for(int i=0;i<n;i++) 49 scanf("%s",Map[i]); 50 DFS(0,0,0); 51 printf("%d\n",res); 52 } 53 return 0; 54 }
标签:any main uil aced HERE get more images hdu
原文地址:https://www.cnblogs.com/MekakuCityActor/p/9193733.html