游程编码

Font Size: Aa Aa Aa

Description

  游程编码又称“运行长度编码”或“行程长度编码”,是一种统计编码,该编码属于无损压缩编码。对于二值图有效。  
  RLE行程长度编码概述
  目前, 压缩技术已经广泛应用于各种软件、声音、影像格式等领域。总的来说, 有两种截然不同的图像格式压缩类型: 有损压缩和无损压缩[1]。有损压缩利用视觉识别的原理可以大大地压缩文件的数据, 但是会影响图像质量。无损压缩的基本原理是相同的颜色信息只需保存一次, 可以删除一些重复数据, 大大减少要在磁盘上保存的图像的容量。无损压缩方法的优点是能够比较好地保存图像的质量, 但是相对有损压缩来说这种方法的压缩率是比较低的。常用的无损压缩算法有 RLE、LZW 等。
RLE 压缩算法的基本原理
  RLE(Run- Length Encoding 行程长度编码)压缩算法是Windows 系统中使用的一种图像文件压缩方法, 其基本思想是: 将一扫描行中颜色值相同的相邻像素用两个字节来表示, 第一个字节是一个计数值, 用于指定像素重复的次数; 第二个字节是具体像素的值[2]。主要通过压缩除掉数据中的冗余字节或字节中的冗余位,从而达到减少文件所占空间的目的。例如, 有一表示颜色像素值的字符串RRRRRGGBBBBBB,用 RLE 压缩方法压缩后可用 5R2G6B 来代替,显然后者的串长度比前者的串长度小得多。译码时按照与编码时采用的相同规则进行, 还原后得到的数据与压缩前的数据完全相同。因此, RLE 是无损压缩技术。

Input

只有一个字符串。(长度小于100)

Output

编码后的字符串。

Sample Input

iiiiillllovvveeeeeeeaaaccccccccmmmmmmmmmm

Sample Output

5i4l1o3v7e3a8c10m
 
参考代码如下:
#include<stdio.h> 
#include<string.h> 
int main() 
{ 
    char s[100]; 
    int i; 
    while(scanf("%s",&s)!=EOF) 
    { 
        int lenth=strlen(s); 
        int count=1; 
        for(i=0;i<lenth;i++) 
        { 
            if(s[i]==s[i+1]) 
            { 
                count++; 
            } 
            else
            { 
                printf("%d%c",count,s[i]); 
                count =1; 
            } 
        } 
        printf("\n"); 
    } 
}

更多做题心得的详情请查看(记得关注哦)https://mp.weixin.qq.com/s?__biz=MzIyOTM4MDMxNw==&mid=2247483798&idx=1&sn=d4fbd34e50ce4efda39d7710d2dc5dc9&chksm=e842d824df3551320d7f1ed85286b2616aec419f7a852cc5c9c9f270beb237b5e6ca83166162&token=1630951018&lang=zh_CN#rd

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值