Fill the Square

来源:互联网 发布:sqlserver history 编辑:程序博客网 时间:2024/05/16 15:41

题意:

填满一个正方形,使得任意相邻的字母不同且字典序最小

思路:

当遇到待填写的位置是,按字典序选择字母判断其四周是否有重,没有就选定这个字母

代码:

#include<cstdio>#include<cstring>#include<string>#include<algorithm>using namespace std;int n;char gird[15][15];char fill(int i, int j) {char a = 'A';while(1) {if(i>0 && gird[i-1][j] == a) {a++;continue;}if(j>0 && gird[i][j-1] == a) {a++;continue;}if(i<n-1 && gird[i+1][j] == a) {a++;continue;}if(j<n-1 && gird[i][j+1] == a) {a++;continue;}break;}return a;}int main() {int kase;scanf("%d", &kase);for(int k=1; k<=kase; k++) {scanf("%d", &n);for(int i=0; i<n; i++){scanf("%s", gird[i]);}printf("Case %d:\n", k);for(int i=0; i<n; i++) {for(int j=0; j<n; j++)if(gird[i][j] == '.') gird[i][j] = fill(i, j);}for(int i=0; i<n; i++) printf("%s\n", gird[i]);}return 0;}


0 0
原创粉丝点击