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;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值