Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
169894 A班匡嘉阳 冲突 C++ 解答错误 0 1 MS 260 KB 863 2024-08-20 19:48:05

Tests(0/2):


#include<bits/stdc++.h> using namespace std; int n,maxn; char s[1005][1005]; void dfs(int p,int cnt){ if(p == n * n){ maxn = max(maxn,cnt); return; } int x = p / n; int y = p % n; dfs(p + 1,cnt); if(s[x][y] == '.'){ bool op = 1; for(int i = x;i < n;i++){ if(s[i][y] == 'X') break; if(s[i][y] == 'Q') op = 0; } for(int i = x;i >= 0;i--){ if(s[i][y] == 'X') break; if(s[i][y] == 'Q') op = 0; } for(int i = y;i < n;i++){ if(s[x][i] == 'X') break; if(s[x][i] == 'Q') op = 0; } for(int i = y;i >= 0;i--){ if(s[x][i] == 'X') break; if(s[x][i] == 'Q') op = 0; } if(op){ s[x][y] = 'Q'; dfs(p + 1,cnt + 1); s[x][y] = '.'; } } } int main(){ while(cin >> n && n){ maxn = 0; for(int i = 0;i < n;i++) cin >> s[i]; dfs(0,0); cout << maxn; } return 0; }


测评信息: