uva 1103

#include <iostream>

#include <cstdio>

#include <cmath>

#include <cstring>

#include <algorithm>

#include <cstdlib>

#include <stack>

#include <cctype>

#include <string>

#include <malloc.h>

#include <queue>

#include <map>



using namespace std;

const int INF = 0xffffff;

const double Pi = 4 * atan(1);

const int Maxn = 200 + 10;

int dir2[8][2] = {{-1,0},{0,-1},{-1,1},{1,-1},{-1,-1},{1,0},{0,1},{1,1}};

int dir[4][2] = {{1,0},{0,1},{-1,0},{0,-1}};

int m,n;

int graph[Maxn][Maxn];

char alpha[] = "ADJKSW";

int con[6];

int dic[6][2] = {{1,0},{3,2},{5,1},{4,4},{0,5},{2,3}};

int num[16][4] = {{0,0,0,0},{0,0,0,1},{0,0,1,0},{0,0,1,1},

                  {0,1,0,0},{0,1,0,1},{0,1,1,0},{0,1,1,1},

                  {1,0,0,0},{1,0,0,1},{1,0,1,0},{1,0,1,1},

                  {1,1,0,0},{1,1,0,1},{1,1,1,0},{1,1,1,1}};

int cnt;



void dfsZero(int r,int c){

    if(r < 0 || r >= n || c < 0 || c >= m || graph[r][c] != 0)

        return;

    graph[r][c] = -1;

    for(int i = 0;i < 4;i++){

        int xx = dir[i][0] + r;

        int yy = dir[i][1] + c;

        dfsZero(xx,yy);

    }

}



void dfs(int r,int c){

    if(r < 0 || r >= n || c < 0 || c >= m || graph[r][c] == -1)

        return;

    if(graph[r][c] == 0){

        cnt++;

        dfsZero(r,c);

        return;

    }

    graph[r][c] = -1;

    for(int i = 0;i < 4;i++){

        int xx = dir[i][0] + r;

        int yy = dir[i][1] + c;

        dfs(xx,yy);

    }

}



int main()

{

#ifndef ONLINE_JUDGE

    freopen("inpt.txt","r",stdin);

#endif

    int cas = 0;

    while(cin >> n >> m && n && m){

        memset(graph,0,sizeof(graph));

        memset(con,0,sizeof(con));

        char str[Maxn];

        for(int i = 0;i < n;i++){

            cin >> str;

            int len = 0;

            for(int j = 0;j < m;j++){

                if(str[j] == '0'){

                    for(int k = 0;k < 4;k++)

                        graph[i][len++] = 0;

                    continue;

                }

                int tmp;

                if(isalpha(str[j]))

                    tmp = str[j] - 'a' + 10;

                else

                    tmp = str[j] - '0';

                for(int k = 0;k < 4;k++){

                    graph[i][len++] = num[tmp][k];

                }

            }

        }

        m *= 4;

        for(int i = 0;i < n;i++){

            if(graph[i][0] == 0)

                dfsZero(i,0);

            if(graph[i][m-1] == 0)

                dfsZero(i,m-1);

        }

        for(int j = 0;j < m;j++){

            if(graph[0][j] == 0)

                dfsZero(0,j);

            if(graph[n-1][j] == 0)

                dfsZero(n-1,j);

        }

        for(int i = 0;i < n;i++){

            for(int j = 0;j < m;j++){

                if(graph[i][j] == 1){

                    cnt = 0;

                    dfs(i,j);

                    for(int k = 0;k < 6;k++){

                        if(cnt == dic[k][0]){

                            con[ dic[k][1] ]++;

                            break;

                        }

                    }

                }

            }

        }

        cout << "Case " << ++cas << ": ";

        for(int i = 0;i < 6;i++){

            for(int j = 0;j < con[i];j++){

                cout << alpha[i];

            }

        }

        cout << endl;

    }

    return 0;

}
View Code

测试数据:

6 2

00

7c

44

7c

30

00

6 25

0000000000000000000000000

0000000000000000000000000

00001fe0000000000007c0000

00003fe0000000000007c0000

0000000000000000000000000

0000000000000000000000000

10 3

000

778

548

748

578

700

000

7f0

1e0

000

16 2

00

7e

42

7e

42

7e

42

7e

42

7e

42

7e

00

00

4a

00

16 1

0

1

2

3

4

5

6

7

8

9

a

b

c

d

e

f

9 2

00

7e

42

7e

42

7e

42

7e

00

43 2

00

7e

00

7e

42

7e

42

7e

42

7e

00

7e

42

7e

00

7e

42

7e

42

7e

00

7e

42

7e

42

7e

42

7e

42

7e

00

7e

42

7e

42

7e

42

7e

42

7e

42

7e

00

200 50

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

10000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

10000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

10000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

10000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

10000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

10000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

10000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

10000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

10000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

10000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

10000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

10000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

10000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

10000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

10000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

10000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

10000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

10000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

10000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000000000000

10000000000000000000000000000000000000000000000000

100 25

0000000000000000000000000

0000000000000000000000000

0000000000000000000000000

0000000000000000000000000

0000000000000000000000000

0000000000000000000000000

0000000000000000000000000

0000000000000000000000000

0000000000000000000000000

00000f8000000000000000000

00001fe000000000000000000

00007ff000000000000000000

00007ff800000000000000000

0000f8f800000000000000000

0001f07c00000000000000000

0001e03c00000000001800000

0001e01c00000000003c00000

0001c01c00000000007c00000

0003c01e0000000000f800000

0003c01e0000000001f000000

0001c01c0000000003f000000

0001c01c0000000007e000000

0001e01c000000000fc000000

0001e03c000000001fc000000

0000e03c000000001fc000000

0000f038000000003ff000000

0000f078000000003ff800000

00007870000000007ff800000

000038f0000000007cfc00000

00003ce0000000007c7c00000

00781fc0f0000000f87c00000

007ffffff0000000f07c00000

007ffffff0000000f07c00000

007ffffff0000001f07c00000

007ffffff0000000e03e00000

007fcf81f0000000603e00000

00000f8000000000003e00000

00000f8000000000003e00000

00000f8000000000003e00000

00000f8000000000001e00000

00000f8000000000001f00000

00000fc000000000001f00000

00000fc000000000001f00000

00000fc000000000001f00000

00000fc000000000000f00000

00001fc000000000000f80000

00001fc000000000000f80000

00001fc000000000000f80000

00001fc000000000000f80000

00001fe000000000000f80000

00001fe000000000000780000

00001fe0000000000007c0000

00001fe0000000000007c0000

00003fe0000000000007c0000

00003fe0000000000007c0000

00003fe0000000000007c0000

00003fe0000c00000003c0000

00000000003ff0000003c0000

00000000007ff8000003e0000

0000000001fffc000003e0000

0000000003e03f000003e0000

0000000007c00f000003e0000

000000000f0003800003f0000

000000000e0001c00003fc000

000000001c0001e00007fe000

000000003c0000e0000fff000

000000073c000070000fdf000

0000001ff8000070001f0f800

0000001ff8000070001e07800

0000003cf0000078001e03800

0000003870000033001e03800

000000307800003fc01e03800

000000703800007fe00e03800

000000703800007ce00e03800

000000703c000078700703800

000000701e0000f0700701000

000000701e0000e0700300000

000000700f0001c0700000000

0000006007800380600000000

000000e003e00700600000000

000000e001fe7e00600000000

000000e000fffc00e00000000

000000e0000ff000e00000000

000000f800038000e00000000

000000fff0000000e00000000

000000fffff00000e00000000

00000003ffffe000c00000000

0000000007ffffc0c00000000

000000000007ffffc00000000

0000000000000fffc00000000

000000000000001fc00000000

0000000000000000000000000

0000000000000000000000000

0000000000000000000000000

0000000000000000000000000

0000000000000000000000000

0000000000000000000000000

0000000000000000000000000

0000000000000000000000000

0000000000000000000000000

150 38

00000000000000000000000000000000000000

00000000000000000000000000000000000000

00000000000000000000000000000000000000

00000000000000000000000000000000000000

00000000000000000000000000000000000000

00000000000000000000000000000000000000

00000000000000000000000000000000000000

00000000000000000000000000000000000000

00000000000000000000000000003000000000

00000f80000000001fff000000007800000000

00001fe0000000007fff80000000ff00000000

00007ff000000000ffffe0000001ff80000000

00007ff800000003fffff0000001fffc000000

0000f8f800000007fffffc000001fffe000000

0001f07c0000000ffffffe000000ffff000000

0001e03c0000001fffffff000000ffff800000

0001e01c0000003fffffff0000007fffc00000

0001c01c0000003fffffff8000007fefc00000

0003c01e0000007fffffffc000003f83c00000

0003c01e000000ffffffffc000001f81e00000

0001c01c000000fffc0fffe000001f01e00000

0001c01c000001fff003ffe000000f01e00000

0001e01c000001ffe001fff000000f00e00000

0001e03c000003ffc0007ff000001e00f00000

0000e03c000003ff80007ff800001e00f00000

0000f038000007ff80003ff800001e00f00000

0000f078000007ff00003ff800001e00f00000

00007870000007ff00001ffc00000e00e00000

000038f000000fff00001ffc00000e00e00000

00003ce000000ffe00000ffc00000e00e00000

00781fc0f0000ffe00000ffc00000f00e00000

007ffffff0000ffc00000ffc00000f01e00000

007ffffff0000ffc00000ffc00000f01e00000

007ffffff0000ffc00000ffc00000701c00000

007ffffff0000ffc00000ffc00000781c00000

007fcf81f0000ffc000007fc00000783c00000

00000f8000000ffc000007fc00000383800000

00000f8000000ffc000007fc000003c7800000

00000f8000000ffc000007fc000001c7800000

00000f8000000ffc000007fc000001e7000000

00000f8000000ffc000007fc000200ef008000

00000fc000000ffc00000ffc0003f8fe3f8000

00000fc000000ffc00000ffc0003ffffff8000

00000fc000000ffc00000ffc0003ffffff8000

00000fc000000ffc00000ffc0003ffffff8000

00001fc000000ffc00000ffc0003ffffff8000

00001fc0000007fe00000ff80003ffffff8000

00001fc0000007fe00000ff80003fffdff8000

00001fc0000007fe00000ff80003c03c000000

00001fe0000007ff00001ff80000007c000000

00001fe0000003ff00001ff00000007c000000

00001fe0000003ff00001ff00000007c000000

00001fe0000001ff80003ff00000007c000000

00003fe0000001ff80003fe00000007c000000

00003fe0000001ff80003fe00000007c000000

00003fe0000000ffc0007fe00000007c000000

00003fe0000000ffc0007fc00000007c000000

000000000000007fe0007fc00000007c000000

000000000000007fe000ff800000007c000000

000000000000007ff001ff800000007c000000

000000000000003ff001ff800000007c000000

000000000000001ff803ff000000007c002000

000000000000001ff803ff000000007c006000

000000000000000ffc07fe000000007c006000

000000000000000ffc0ffc000000007c00c000

000000000000000ffe0ffc000000003e01c000

0000000000000007ff0ff8000000003f03c000

0000000000000003ff1ff0000000003f8f8000

0000000003c00001ffbff00000f0001fff8000

0000000003ffc001ffffe0007ff0000fff8000

0000000003fffff1ffffe3fffff00007ff8000

0000000003fffffffffffffffff00001ff0000

0000000003fffffffffffffffff00000ff0000

0000000003fffffffffffffffff000007f0000

0000000003fffffffffffffffff000001e0000

0000000003fffffffffffffffff000000e0000

0000000003fffffffffffffffff00000020000

0000000003fffffffffffffffff00000000000

0000000003fffffffffffffffff00000000000

0000000003fffffffffffffffff00000000000

0000000003fffffffffffffffff00000000000

0000000003fffffffffffffffff00000000000

0000000003fffffffffffffffff00000000000

0000000003fffffc1ffe0007fff00000000000

0000000003ff80000ffe000000f00000000000

00000000038000000ffe000000000000000000

00000000000000001fff000000000000000000

00000000000000001fff000000000000000000

00000000000000001fff000000000000000000

00000000000000001fff000000000000000000

00000000000000001fff000000000000000000

00000000000000001fff000000000000000000

00000000000000003fff000000000000000000

00000000000000003fff000000000000000000

00000000000000003fff0000000fc000000000

000000000fe000003fff8000003ff000000000

000000003ffc00003fff8000007ffc00000000

00000000fffe00003fff800000fcfc00000000

00000001f01f00003fff800001f03e00000000

00000003e00f80003fff800003e01f00000000

00000003e00780003fff800003e00f00000000

00000003e00780003fff800003c00f00000000

00000003e00f80003fff800003c00f00000000

00000001f00f00007fff800003c00f00000000

00000000f81e00007fffc00003e00f00000000

000000007c3c00007fffc00001e01e00000000

000000003e7800007fffc00000f01e00000000

000000fffffffe007fffc00000f03c00000000

000000fffffffe007fffc00000787800000000

000000fffffffe007fffc000003cf000000000

0000000007c000007fffe000f81fe07c000000

0000000007e000007fffe000fffffffc000000

0000000007e000007fffe000fffffffc000000

000000000fe000007fffe000fffffffc000000

000000000ff00000ffffe000ffc7c0fc000000

000000000ff00000ffffe0000007c000000000

000000001ff00000ffffe000000fc000000000

000000001ff00000ffffe000000fc000000000

000000001ff80000ffffe000000fc000000000

000000001ff80000ffffe000000fc000000000

000000003ff80001ffffe000000fe000000000

000000003ff80001ffffe000000fe000000000

0000000000000001fffff000001fe000000000

0000000000000001fffff000001fe000000000

0000000000000001fffff000001fe000000000

0000000000000001fffff000001ff000000000

0000000000000001fffff000001ff000000000

0000000000000001fffff000001ff000000000

0000000000000001fffff000003ff000000000

0000000000000001fffff000003ff000000000

0000000000000001fffff000003ff000000000

0000000000000001fffff80000000000000000

0000000000000003fffff80000000000000000

0000000000000003fffff80000000000000000

0000000000000003fffff80000000000000000

0000000000000003fffff80000000000000000

0000000000000003fffff80000000000000000

0000000000000003fffff80000000000000000

0000000000000003fffff80000000000000000

0000000000000003fffffc0000000000000000

0000000000000003fffffc0000000000000000

0000000000000007fffffc0000000000000000

0000000000000007fffffc0000000000000000

0000000000000007fffffc0000000000000000

00000000000000000000000000000000000000

00000000000000000000000000000000000000

00000000000000000000000000000000000000

00000000000000000000000000000000000000

00000000000000000000000000000000000000

00000000000000000000000000000000000000

0 0
View Code

Case 1: A
Case 2: WW
Case 3: AKW
Case 4: DWWW
Case 5: WWWWWWWW
Case 6: J
Case 7: ADJKSW
Case 8: WWWWWWWWWWWWWWWWWWWW
Case 9: AKW
Case 10: AAAAA

之前有一道uva572做铺垫,然后被推荐uva 1103,一开始愣是没读懂,然后就顺手搜的题解……哭…………啊啊啊!!!

主体思路是 把周边的空白扣去……

然后每个图案中间的空白区域数目都是不一样的,干后根据空白数目来判断相应的字母,

其中第一次WA是因为初始化没有把周边完全抠干净……23333333

总之,题很简单,嗯……太菜了……233333

你可能感兴趣的:(uva)