标签:游程 1315 字节 编码 RLE 压缩 无损压缩 长度
游程编码又称“运行长度编码”或“行程长度编码”,是一种统计编码,该编码属于无损压缩编码。对于二值图有效。 RLE行程长度编码概述 目前, 压缩技术已经广泛应用于各种软件、声音、影像格式等领域。总的来说, 有两种截然不同的图像格式压缩类型: 有损压缩和无损压缩[1]。有损压缩利用视觉识别的原理可以大大地压缩文件的数据, 但是会影响图像质量。无损压缩的基本原理是相同的颜色信息只需保存一次, 可以删除一些重复数据, 大大减少要在磁盘上保存的图像的容量。无损压缩方法的优点是能够比较好地保存图像的质量, 但是相对有损压缩来说这种方法的压缩率是比较低的。常用的无损压缩算法有 RLE、LZW 等。 RLE 压缩算法的基本原理 RLE(Run- Length Encoding 行程长度编码)压缩算法是Windows 系统中使用的一种图像文件压缩方法, 其基本思想是: 将一扫描行中颜色值相同的相邻像素用两个字节来表示, 第一个字节是一个计数值, 用于指定像素重复的次数; 第二个字节是具体像素的值[2]。主要通过压缩除掉数据中的冗余字节或字节中的冗余位,从而达到减少文件所占空间的目的。例如, 有一表示颜色像素值的字符串RRRRRGGBBBBBB,用 RLE 压缩方法压缩后可用 5R2G6B 来代替,显然后者的串长度比前者的串长度小得多。译码时按照与编码时采用的相同规则进行, 还原后得到的数据与压缩前的数据完全相同。因此, RLE 是无损压缩技术。
输入
输入的第一行是一个整数N表示有N组测试数据。接下来N行,每行都有一个字符串。(由小写字母组成且长度小于1000)
输出
编码后的字符串。样例输入
2 aabbbb iiiiillllovvveeeeeeeaaaccccccccmmmmmmmmmm
样例输出
2a4b 5i4l1o3v7e3a8c10m
#include <stdio.h> #include <string.h> int main(){ char s[1000]; char s1[500]; int count=1,n1=0; int num[100],n; scanf("%d",&n); for(int k=0;k<n;k++){ scanf("%s",s); for(int i=0;i<strlen(s);i++){ if(s[i]==s[i+1]) count++; else{ num[n1]=count; s1[n1]=s[i]; n1++; count=1; } } num[n1]=-1; s1[n1]='['; n1++; } for(int j=0;j<n1;j++){ if(num[j]!=-1) printf("%d%c",num[j],s1[j]); else printf("\n"); } return 0; }
标签:游程,1315,字节,编码,RLE,压缩,无损压缩,长度 来源: https://www.cnblogs.com/PerZhu/p/11588211.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。