信息解码(Message Decoding, ACM/ICPC World Finals 1991, UVa 213)

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;

char codes[8][1<<8];

int readchar();
int readint(int c);
int readcodes();

int main()
{
	while(readcodes())
	{
		while(1)
		{
			int len=readint(3);
			if(len==0) break;
			//cout<<len<<endl;
			while(1)
			{
				int v=readint(len);
				if(v==(1<<len)-1) break;
				putchar(codes[len][v]);
			}
		}
		putchar('\n');
	}
	return 0;
 } 
 
 int readint(int c)
 {
 	int v=0;
 	while(c--)
 	{
 		v=v*2+readchar()-'0';
	 }
	 return v;
 }
 
 int readchar()
 {
 	for(;;)
 	{
 		int ch=getchar();
 		if(ch!='\n'&&ch!='\r') return ch;
	 }
 }
 
 int readcodes()
 {
 	memset(codes,0,sizeof(codes));
 	codes[1][0]=readchar();
 	for(int i=2;i<=7;i++)
 		for(int j=0;j<(1<<i)-1;j++)
 		{
 			char ch=getchar();
 			if(ch==EOF) return 0;
 			if(ch=='\n'||ch=='\r') return 1;
 			codes[i][j]=ch;
		 }
	return 1;
 }

猜你喜欢

转载自blog.csdn.net/qq_41667282/article/details/81194537