思路:因为要求是字典序,这道题的第一反应就是从A-Z选取字母,在正方形中从上到下,从左到右这样的顺序去填字母,一旦判断这个字母旁边没有和它一样的,那么就证明这个字母就是正确答案,继续填下一个字母。
#include <iostream>
#include "bits/stdc++.h"
using namespace std;
int T,n;
vector<vector<char>>grid(10,vector<char>(10));
bool safe(int i,int j)
{
return i>=0 && i<n && j>=0 && j<n;
}
int main() {
cin>>T;
for(int c = 1;c<=T;c++)
{
cin>>n;
for(int i = 0;i<n;i++)
{
for(int j = 0;j<n;j++)
{
cin>>grid[i][j];
}
}
for(int j = 0;j<n;j++)
{
for(int i = 0;i<n;i++)
{
if(grid[i][j] == '.')
{
for(char k = 'A';k <= 'Z';k++)
{
if(safe(i+1,j) && grid[i+1][j] == k) continue;
if(safe(i-1,j) && grid[i-1][j] == k) continue;
if(safe(i,j-1) && grid[i][j-1] == k) continue;
if(safe(i,j+1) && grid[i][j+1] == k) continue;
grid[i][j] = k;
break;
}
}
}
}
cout<<"Case "<<c<<":"<<endl;
for(int i = 0;i<n;i++)
{
for(int j = 0;j<n;j++)
{
cout<<grid[i][j];
}
cout<<endl;
}
}
return 0;
}