UVA - 11520 Fill the Square 暴力

来源:互联网 发布:java 成员信息管理 编辑:程序博客网 时间:2024/05/20 07:33

题目大意:在一个n*n的网格中填了一些大写字幕,你的任务是把剩下的格子中也填满大写字母,使得任意两个相邻的格子中的字母不同,如果有多种填法,则要求按照从小到大,从左到右的顺序把所有格子连接起来得到的字符串的字典序应尽量小

解题思路:一一枚举,从小到大开始枚举,如果可以填的话,就直接填下去

#include<cstdio>#include<cstring>#define maxn 20char map[maxn][maxn];int main() {int test ,N, mark = 1;scanf("%d",&test);while(test--) {scanf("%d",&N);for(int i = 0; i < N; i++)scanf("%s",map[i]);for(int i = 0; i < N; i++)for(int j = 0; j < N; j++) for(int k = 'A'; k <= 'Z'; k++) if(map[i][j] == '.') {if(i && map[i-1][j] == k)continue;if(i < N - 1 && map[i+1][j] == k)continue;if(j && map[i][j-1] == k)continue;if(j < N- 1 && map[i][j+1] == k)continue;map[i][j] = k;break;}printf("Case %d:\n",mark++);for(int i = 0; i < N; i++)printf("%s\n",map[i]);}return 0;}


0 0
原创粉丝点击