XTU1154:Encode
来源:互联网 发布:otl功率放大器实验数据 编辑:程序博客网 时间:2024/06/06 04:51
题目描述
行程编码是一种常见的无损压缩方式。比如针对于纯英文小写字符我们可以按以下方式进行编码:每个字节的低5位表示英文小写字母的序号(从0到25),高3位表示此字母连续的次数-1(0到7依次表示连续1到8次)。比如说一个字节的二进制为00100001,其表示字符串bb。给你一个字符串,试将字符串编码为对应的行程编码,并将编码字节的16进制输出。
输入
第一行是一个整数K,表示样例的个数。以后每行是一个待编码的小写英文字母组成的字符串,其长度不超过1000个字符。
输出
每行输出一个编码的16进制数码串(10~15使用a~f表示)。
样例输入
4aabbaaaaaaaaaazzzzzzzzz
样例输出
202100e000f919
Source
XTUCPC2013
#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;char str[1005];int hash[10] = {0,0,32,64,96,128,160,192,224};int len;void change(int s){ int s1,s2; s1 = s/16; s2 = s%16; if(s1>=0 && s1<=9) printf("%d",s1); else printf("%c",s1-10+'a'); if(s2>=0 && s2<=9) printf("%d",s2); else printf("%c",s2-10+'a');}void solve(int word,int cnt){ int sum = 0; while(cnt>8) { sum = hash[8]+word; change(sum); cnt-=8; } if(cnt) { sum = hash[cnt]+word; change(sum); }}int main(){ int t,i,j,cnt,word; scanf("%d",&t); while(t--) { scanf("%s",str); len = strlen(str); word = str[0]-'a'; cnt = 1; for(i = 1; i<len; i++) { if(str[i] == word+'a') cnt++; else { solve(word,cnt); word = str[i]-'a'; cnt = 1; } } solve(word,cnt); printf("\n"); } return 0;}
0 0
- XTU1154:Encode
- encode
- @encode
- Encode 原代码
- VBScript.EnCode
- MPEG-Encode
- huffman encode
- js encode
- file encode
- ENCODE封装
- URL Encode
- JavaScript encode
- Encode Unicode
- url encode
- encode decode
- URL encode
- encode decode
- x264 encode
- 高并发高流量网站架构(转)
- XTU1151:Bus(DP)
- 【玩转微信公众平台之三】 基本操作
- MVC框架理解
- PHP初学习
- XTU1154:Encode
- 【玩转微信公众平台之四】 编辑模式的使用
- JS 删除字符串最后一个字符的几种方法
- windows 如何查看端口占用情况?
- ios app初始化和数据迁移的设计思路
- ZOJ-3211
- 三角形判断
- 九度 OJ 1553 时钟
- 对象转换