• UVa-213-信息解码


    这题的话,我们只要理解题意,应该就不算很难。
    我们可以开一个二维数组,用来存放对应的编码字符,第一个下表是length,第二个下标是value,这样一来,我们在读入数据的时候就进行处理,然后想要使用的时候就可以直接找到。
    读完编码头之后,我们就不停地读入每一个小节,直到出现000。读小节的时候,我们不停地读入对应len的整数,然后输出该编码字符,如果值为全一,则该小节结束。
    putchar这个函数还挺好用的,还有读入的时候,因为不允许全一,所以就读入到(1<<len)-1以内就可以了。

    #include <stdio.h>
    #include <string.h>
    
    int readchar()
    {
    	for (;;) {
    		char ch=getchar();
    		if (ch!='
    '&&ch!='
    ') return ch;
    	}
    }
    
    int readint(int c)
    {
    	int v=0;
    	while (c--) {
    		v=v*2+readchar()-'0';
    	}
    	return v;
    }
    
    char code[8][1<<8];
    int readcodes()
    {
    	memset(code,0,sizeof(code));
    	code[1][0]=readchar();
    	for (int len=2;len<=7;len++) {
    		for (int i=0;i<(1<<len)-1;i++) {
    			char ch=getchar();
    			if (ch==EOF) return 0;
    			if (ch=='
    '||ch=='
    ') return 1;
    			code[len][i]=ch;
    		}
    	}
    	return 1;
    }
    
    int main()
    {
    	while (readcodes()) {
    		for (;;) {
    			int len=readint(3);
    			if (len==0) break;
    			for (;;) {
    				int value=readint(len);
    				if (value==(1<<len)-1) break;
    				putchar(code[len][value]);
    			}
    		}
    		putchar('
    ');
    	}
    	return 0;
    }
    //for (int len=2;len<=7;len++) {
    //	for (int i=0;i<(1<<len)-1;i++)
    //		putchar(code[len][i]);
    //	putchar('
    ');
    //}
    
  • 相关阅读:
    C#即时释放内存
    NI Vision ClampRake修改
    CListCtrl颜色设置
    备份和vim编辑器的操作
    查看,统计,检索文件命令
    linux中find mv cp 等常用命令用法
    防止恶意用户登入linux服务器
    CentOS7 启动时出现:Redirecting to /bin/systemctl start httpd.service
    linux服务器常用命令
    14个支持响应式设计的前端框架
  • 原文地址:https://www.cnblogs.com/xyqxyq/p/10350143.html
Copyright © 2020-2023  润新知