标签:nyoj
4
.X..
....
XX..
....
2
XX
.X
3
.X.
X.X
.X.
3
...
.XX
.XX
4
....
....
....
....
0
样例输出
5
1
5
2
4
AC代码:
<span style="font-size:18px;">#include <cstdio> #include <iostream> #include <cstring> using namespace std ; char mp[100][100] ; int n,maxn ; int check(int r,int c) { int flag = 1 ; for(int i = r ;i>=0 ;i--) { if(mp[i][c] == 'X') break ; if(mp[i][c] == 'b') { flag = 0 ; break ; } } for(int j = c ;j>=0 ;j--) { if(mp[r][j] == 'X') break ; if(mp[r][j] == 'b') { flag = 0 ; break ; } } return flag ; } void dfs(int pos,int sum) { int r = pos/n ,c=pos%n; if(pos == n*n) { if(sum > maxn) maxn = sum ; return ; } if(mp[r][c] == '.') { if(check(r,c)) { mp[r][c] = 'b' ; dfs(pos+1,sum+1) ; mp[r][c] = '.' ; } } dfs(pos+1,sum) ; } int main() { while(scanf("%d",&n)!=EOF && n) { memset(mp,0,sizeof(mp)) ; for(int i = 0 ;i<n ;i++) for(int j = 0 ;j<n ;j++) { cin>>mp[i][j] ; } maxn = 0 ; dfs(0,0) ; printf("%d\n",maxn) ; } return 0 ; } </span>
标签:nyoj
原文地址:http://blog.csdn.net/u012566693/article/details/45154007