标签:des style blog http io ar color os sp
http://acm.hdu.edu.cn/showproblem.php?pid=1045
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6756 Accepted Submission(s): 3829
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 int n,c[10][10]; 6 char str[10][10]; 7 int map[10][10]; 8 int mmax; 9 bool judge(int row,int col) //判断是否可以放置 10 { //在遇到墙之前同行或同列上已放置,则不能再放 11 int i; 12 for(i=col-1;i>=0;i--) 13 { 14 if(map[row][i]==1) return false; 15 if(str[row][i]==‘X‘) break; 16 } 17 18 for(i=row-1;i>=0;i--) 19 { 20 if(map[i][col]==1) return false; 21 if(str[i][col]==‘X‘) break; 22 } 23 24 return true; 25 } 26 void dfs(int x,int y,int num) 27 { 28 if(x==n) 29 { 30 if(num>mmax) 31 mmax=num; 32 return ; 33 } 34 else 35 { 36 // printf("x=%d,y=%d,num=%d\n",x,y,num); 37 if(y<n) 38 { 39 if(str[x][y]==‘.‘&&judge(x,y)) 40 { 41 map[x][y]=1; 42 dfs(x,y+1,num+1); 43 map[x][y]=0; 44 } 45 dfs(x,y+1,num); 46 } 47 else 48 dfs(x+1,0,num); 49 50 } 51 } 52 int main() 53 { 54 while(~scanf("%d",&n)) 55 { 56 int i; 57 memset(map,0,sizeof(map)); 58 if(n==0) 59 break; 60 mmax=0; 61 for(i=0; i<n; i++) 62 scanf("%s",str[i]); 63 dfs(0,0,0); 64 printf("%d\n",mmax); 65 } 66 return 0; 67 }
标签:des style blog http io ar color os sp
原文地址:http://www.cnblogs.com/cancangood/p/4161569.html