uva 213 - Message Decoding (我觉得我的方法要比书上少很多代码,不保证好……)

#include<stdio.h>
#include<math.h>
#include<string.h>
char s[250];
char a[10][250];
int a1[4];
int a2[250];
char ch;

int init(int len)
{
    int tt=0;
    for(int i=1;i<=7;i++)
    {
        for(int j=0;j<(int)pow(2,i)-1;j++)
        {
            a[i][j]=s[tt++];
            if(tt>=len)
                break;
        }
        if(tt>=len)
            break;
    }
}

int tran(int *aa,int len)
{
    int temp=0;
    for(int i=len-1,j=0; i>=0; i--,j++)
    {
        temp+=(int)aa[i]*pow(2,j);
    }
    return temp;
}

int main()
{
    while(gets(s)!=NULL)
    {
        memset(a,0,sizeof(a));
        int len=strlen(s);
        init(len);

        while(1)
        {
            int t2=0;
            while(t2<3)
            {
                scanf("%c",&ch);
                if(ch=='1'||ch=='0')
                {
                    a1[t2]=ch-'0';
                    t2++;
                }
            }
            int lenth=tran(a1,3);
            if(lenth==0)
            {
                scanf("%c",&ch);
                printf("\n");
                break;
            }
            while(1)
            {
                int t3=0;
                while(t3<lenth)
                {
                    scanf("%c",&ch);
                    if(ch=='1'||ch=='0')
                    {
                        a2[t3]=ch-'0';
                        t3++;
                    }
                }
                int ans=tran(a2,lenth);
                if(ans!=(int)pow(2,lenth)-1)
                    printf("%c",a[lenth][ans]);
                else
                    break;
            }
        }
    }
    return 0;
}

时间: 2024-12-30 04:17:28

uva 213 - Message Decoding (我觉得我的方法要比书上少很多代码,不保证好……)的相关文章

UVa 213 Message Decoding(World Finals1991,字符串)

 Message Decoding  Some message encoding schemes require that an encoded message be sent in two parts. The first part, called the header, contains the characters of the message. The second part contains a pattern that represents the message. You must

[UVa 213]Message Decoding,ACM/ICPC World Finals 1991 信息解码

A children's board game consists of a square array of dots that contains lines connecting some of the pairs of adjacent dots. One part of the game requires that the players count the number of squares of certain sizes that are formed by these lines.

UVa 213 - Message Decoding

将字符用01串进行编码,并把下面的01串转换成对应字符串 打了一遍书上的样例程序.. 读取单个字符的函数来忽略换行符还是很神奇的 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 char code[8][1<<8]; 6 char readchar(){ 7 while(1){ 8 char ch=getchar(); 9 if(c

UVA - 213 Message Decoding (输入字符串并对单个字符进行操作的输入输出)

POINT: 关于表示一个编码:利用code字符数组表示一个编码字符,其中code[len][val]表示长度为len,二进制值为val的字符: 主程序如下: 1 #include <iostream> 2 #include <sstream> 3 #include <cstdio> 4 #include <cstring> 5 #include <cmath> 6 #include <string> 7 #include <v

UVa 213 Message Decoding (信息编码)

该题目作为放假回归正轨的第一道正式做的题目,被卡了好久,唉,怪我有颗太浪的心 解题思路: 1.把编码头用二维字符数组存储起来,a[x][y]存储对应的字符,x表示编码的长度,y表示编码的大小, 存储时注意y<2^x - 1的 2.由于编码文本可能是由多行组成,所以需要判断和跳过对换行符的处理,为方便处理,将编码文本视作字符处理 #include<iostream> #include<CString> #include<cmath> #include<stdl

UVA213 UVALive5152 Message Decoding

World Finals >> 1991 - San Antonio 问题链接:UVA213 UVALive5152 Message Decoding. 问题简述:参见问题链接. 问题分析:(略). 程序中,若干功能封装到函数中,使得程序逻辑变得简洁. AC的C语言程序如下: /* UVA213 UVALive5152 Message Decoding */ #include <stdio.h> #include <memory.h> #define CODE_LEN

uva 11134 - Fabled Rooks(主要在贪心方法及其实现)

#用到了贪心方法. #这个贪心刚开始想错了方法,后来想到了新的方法,AC 刚开始错在了按左端点升序排序并从左往右取最左端能取的格子,这个方法显然不能符合要求 比如下面这组数据: 2 1 1 3 3 1 1 3 3 2 2 2 2 错误代码: #include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> using namespace std; struct note {

uva 11572 - Unique Snowflakes(与书上方法略有不同)

刘汝佳书上用的是set, 通过集合来查找.count()和删除.erase().这个方法比我的要好,用时更短. 我觉得map也能完成这个任务,但是其删除并不方便,需要先查找find()下标,然后删除此下标对应的元素 但是map有map的用法,下面的方法就是比较容易实现的一种方法. 我本想着这个一边读完就计算出了ans,应该更快一点的,但是事实上还不如先读再用set处理来得快. #include<cstdio> #include<iostream> #include<map&g

紫书第一章训练1 D -Message Decoding(UVA213) by 16黄睿博

来源:http://m.blog.csdn.net/article/details?id=70766751 Some message encoding schemes require that an encoded message be sent in two parts. The ?rst part, called the header, contains the characters of the message. The second part contains a pattern tha