UVALive 5797 In Braille

题目

比赛总结

题意:给出1-9的盲文,每种盲文都是2×3的点阵,有些点是凸起的用*表示,其余的用.表示。要进行两种操作,1 把盲文变成数字,2 把数字变成盲文

解法:按规则模拟。。。。注意读入的每个盲文之间有空格隔开,如果用gets读要消息空格和换行

 

//time 3ms

#include <cstdio>

#include <cstring>

#include <iostream>

#include <algorithm>

const int MAXN = 5005;

using namespace std;

char str[10][10]={"011100","100000","101000","110000","110100","100100","111000","111100","101100","011000"};

char st[MAXN][10];

int main()

{

    //freopen("/home/moor/Code/input","r",stdin);

    int n;

    char a[MAXN],op[5];



    while(scanf("%d",&n)&&n)

    {

        scanf("%s",op);

        if(op[0]=='S')

        {

            scanf("%s",a);

            for(int i = 0; i < 3; i++)

            {

                for(int j = 0; a[j]; j++)

                {

                    int p=a[j]-'0';

                    if(str[p][i*2]=='1') printf("*");

                    else printf(".");

                    if(str[p][i*2+1]=='1') printf("*");

                    else printf(".");

                    if(j!=(int)strlen(a)-1)

                        printf(" ");

                }

                printf("\n");

            }



        }

        else

        {

            for(int i = 0; i < 3; i++)

            {

                a[0]='\0';

                while(a[0]=='\0') gets(a);

                for(int j = 0,k=0; a[j]; j+=3,k++)

                {



                    if(a[j]=='*') st[k][i*2]='1';

                    else st[k][i*2]='0';

                    if(a[j+1]=='*') st[k][i*2+1]='1';

                    else st[k][i*2+1]='0';

                }

            }

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

            {

                st[i][6]='\0';

                for(int j = 0; j < 10; j++)

                {

                    if(strcmp(str[j],st[i])==0)

                    {

                        printf("%d",j);

                        break;

                    }

                }

            }

            printf("\n");

        }

    }

    return 0;

}


 


 

你可能感兴趣的:(live)