J - Fill the Square(暴力&填方格)

J - Fill the Square(暴力&填方格)

题意:给一 n × n n\times n 图,将未填字母的格子填上字母,保证相邻字母不相同,并且要求从左到右,从上到下按字典序填。

思路:因为 n n 最大只有 10 10 ,所以依次从上到下,从左到右一个个填,每次填的时候从 A A 遍历到 Z Z 判断一下周围的字母是否冲突即可。

时间复杂度: O ( 26 n 2 ) O(26n^2)

AC代码:

#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;
const int N=15;
char mp[N][N];
int n,t;
int main(){
	scanf("%d",&t);
	for(int k=1;k<=t;k++)
	{
		scanf("%d",&n);
		for(int i=1;i<=n;i++) scanf("%s",mp[i]+1);
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=n;j++){
				if(mp[i][j]=='.')
				for(int m=0;m<26;m++)
				{	char c='A'+m;
					if(mp[i][j-1]==c||mp[i][j+1]==c||mp[i+1][j]==c||mp[i-1][j]==c){
						continue;
					}
					mp[i][j]=c;
					break;
				}
			}
		}
		printf("Case %d:\n",k);
		for(int i=1;i<=n;i++)
			printf("%s\n",mp[i]+1);
	}
	return 0;
} 
原创文章 201 获赞 165 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45750972/article/details/105914424