UVa 11520 - Fill the Square

传送门

UVa 11520 - Fill the Square

题意

给一个图填上英文,要求上下左右不能有相同的,字典序从左到右从上到下最小。

思路

暴力。

代码

#include <bits/stdc++.h>
#define LL long long
#define lowbit(x) ((x) & (-x))
const int MAXN = 10 + 5;
const int INF = 0x3f3f3f3f;
using namespace std;
 
char mp[MAXN][MAXN];
 
int main()
{
    //freopen("input.txt", "r", stdin);
    bool flag;
    int T, i, j, n, cases = 0;
    scanf("%d", &T);
    while (T--)
    {
        scanf("%d%*c", &n);
        for (i = 0; i < n; i++)
            gets(mp[i]);
        for (i = 0; i < n; i++)
            for (j = 0; j < n; j++)
            {
                if (mp[i][j] == '.')
                {
                    for (char k = 'A'; k <= 'Z'; k++)
                    {
                        flag = true;
                        if (i > 0 && k == mp[i - 1][j]) flag = false;
                        if (i < n - 1 && k == mp[i + 1][j]) flag = false;
                        if (j > 0 && k == mp[i][j - 1]) flag = false;
                        if (j < n - 1 && k == mp[i][j + 1]) flag = false;
                        if (flag)
                        {
                            mp[i][j] = k;
                            break;
                        }
                    }
                }
            }
        printf("Case %d:\n", ++cases);
        for (i = 0; i < n; i++)
            puts(mp[i]);
    }
    return 0;
}

Powered by Jekyll and Theme by solid