Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
168808 | C班 郑筱橦 | 冲突 | C++ | 通过 | 100 | 0 MS | 252 KB | 1548 | 2024-08-20 13:48:43 |
#include <iostream> #include<bits/stdc++.h> using namespace std; int ans,n; char str[10][10]; void dfs(int p,int cnt) { if(p==n*n) { ans=max(ans,cnt); return; } int x=p/n,y=p%n; dfs(p+1,cnt); if(str[x][y]=='.') { int op=1; for(int i=x;i<n;i++) { if(str[i][y]=='X') { break; } if(str[i][y]=='Q') { op=0; } } for(int i=x;i>=0;i--) { if(str[i][y]=='X') { break; } if(str[i][y]=='Q') { op=0; } } for(int i=y;i<n;i++) { if(str[x][i]=='X') { break; } if(str[x][i]=='Q') { op=0; } } for(int i=y;i>=0;i--) { if(str[x][i]=='X') { break; } if(str[x][i]=='Q') { op=0; } } if(op) { str[x][y]='Q'; dfs(p+1,cnt+1); str[x][y]='.'; } } } int main() { while(scanf("%d",&n)&&n!=0) { ans=0; for(int i=0;i<n;i++) { scanf("%s",str[i]); } dfs(0,0); printf("%d\n",ans); } return 0; }