时间:2016-03-19 14:52:10 星期六
题目编号:[2016-03-19][UVA][11520][Fill the Square]
题目大意:给定n<=10 的不完全矩阵,求填充完整矩阵,使得相邻的字母不同,并且字典序最小,输出最终的矩阵
方法:从左到右,从上到下,每个空格枚举’A’-‘Z’的所有情况,满足就跳出
#include <cstdio>using namespace std;#define FOR(x,y,z) for(int (x)=(y);(x)<(z);++(x))const int maxn = 10 + 10;char m[maxn][maxn];int main(){ int t,cntcase = 0,n; scanf("%d",&t); while(t--){ scanf("%d",&n);getchar(); FOR(i,0,n) gets(m[i]); FOR(i,0,n){ FOR(j,0,n){ if(m[i][j] == '.'){ for(char ch = 'A';ch <= 'Z';++ch){ if(i > 0 && m[i - 1][j] == ch) continue; if(i < n-1 && m[i + 1][j] == ch) continue; if(j > 0 && m[i][j - 1] == ch) continue; if(j < n - 1 && m[i][j + 1] == ch) continue; m[i][j] = ch;break; } } } } printf("Case %d:\n",++cntcase); FOR(i,0,n) puts(m[i]); } return 0;}