uva11520填字母

来源:互联网 发布:矩阵a与b相似,则a与b 编辑:程序博客网 时间:2024/05/14 07:18

题意给一个网格,让你填字母,但是要相邻的字母不一样,然后让横的字典序和竖的字典序最小。
题解就是这么回事,一个一个式,亏我还想了好久那个如何字典序最小。。。。脑残了,就是从“a”到‘z’一个一个试,然后看四周能不能行。

#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;int n;char map[12][12];int main(){    int t , cnt = 1;    scanf("%d",&t);    while(t--){        bool ok = true;        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(char k = 'A' ; k <= 'Z' ; k++){                    ok = true;                    if(map[i][j] != '.'){                        ok = false;                    }                    if(map[i - 1][j] == k){                        ok = false;                    }                    if(map[i + 1][j] == k){                        ok = false;                    }                    if(map[i][j - 1] == k){                        ok = false;                    }                    if(map[i][j + 1] == k){                        ok = false;                    }                    if(ok) map[i][j] = k;                }            }        }        printf("Case %d:\n",cnt++);        for(int i = 0 ; i < n ; i++){            puts(map[i]);        }    }    return 0;}
0 0