zoukankan      html  css  js  c++  java
  • uva 11520 Fill the Square

    https://vjudge.net/problem/UVA-11520

    题意:

    给出一个n * n规模的网格,其中有些格子填充了大写字母,有些格子是空的。现在要把剩下的格子全部填充上大些字母,要求相邻的格子的字母不能相同(相邻的格子为有公共边的格子),并且填充完之后字典序最小,字典序是行优先。

    思路:

    把周围用过的字母统计一下,之后吧没用过的最小的给它填上就ok。

    QAQ,因为忘记这个格子没有填充过才能填充,所以wa了好多发,真不应该!!!切记仔细与专注。

    代码:

     1 #include <stdio.h>
     2 #include <string.h>
     3 
     4 bool a[50];
     5 char b[15][15];
     6 
     7 int main()
     8 {
     9     int t;
    10 
    11     scanf("%d",&t);
    12 
    13     int cas = 0;
    14 
    15     while (t--)
    16     {
    17         int n;
    18 
    19         scanf("%d",&n);
    20 
    21         for (int i = 0;i < n;i++)
    22             scanf("%s",b[i]);
    23 
    24         for (int i = 0;i < n;i++)
    25             for (int j = 0;j < n;j++)
    26         {
    27             memset(a,0,sizeof(a));
    28 
    29             if (b[i][j] != '.') continue;
    30 
    31             if (i - 1 >= 0)
    32             {
    33                 if (b[i-1][j] != '.')
    34                 {
    35                     char x = b[i-1][j];
    36                     a[x-'A'] = 1;
    37                 }
    38             }
    39             if (j - 1 >= 0)
    40             {
    41                 if (b[i][j-1] != '.')
    42                 {
    43                     char x = b[i][j-1];
    44                     a[x-'A'] = 1;
    45                 }
    46             }
    47             if (i + 1 < n)
    48             {
    49                 if (b[i+1][j] != '.')
    50                 {
    51                     char x = b[i+1][j];
    52                     a[x-'A'] = 1;
    53                 }
    54             }
    55             if (j + 1 < n)
    56             {
    57                 if (b[i][j+1] != '.')
    58                 {
    59                     char x = b[i][j+1];
    60                     a[x-'A'] = 1;
    61                 }
    62             }
    63 
    64             char x;
    65 
    66             for (int k = 0;k <= 'Z' - 'A';k++)
    67             {
    68                 if (!a[k])
    69                 {
    70                     x = 'A' + k;
    71                     break;
    72                 }
    73             }
    74 
    75             b[i][j] = x;
    76         }
    77 
    78         printf("Case %d:
    ",++cas);
    79 
    80 
    81         for (int i = 0;i < n;i++)
    82             printf("%s
    ",b[i]);
    83     }
    84 
    85     return 0;
    86 }
  • 相关阅读:
    CCF201712-2游戏
    SpringMVC(未完待续....)
    MySQL----商品表及商品分类表例子
    Spring----属性注入的三种方式
    Spring的配置文件applicationContext.xml
    Spring----getBean的四种用法
    Spring----工厂模式
    spring第一个小例子(Spring_xjs1)
    JSON
    XStream(可把JavaBean转换成XML的小工具)
  • 原文地址:https://www.cnblogs.com/kickit/p/7609571.html
Copyright © 2011-2022 走看看