`

Run Length Encoding

阅读更多

游程编码 (Run Length Encoding ) 是一种简单的编码方法,通常用于控制论中对二值图像编码。ACM有一道题目就是关于该编码。见tzu 1149poj 1782 。虽然是简单题,我却花了好大功夫才搞定,功力还是不足阿。

程序代码如下:

#include <stdio.h>

#define MAX 1024

int printStr(char *str, int len);
int main(void)
{
  char target[MAX];
  int diffCount,sameCount;
  char *pFirstChar, *pLastChar;
  while(1)
    {
      if(fgets(target,sizeof(target),stdin) == NULL)
	break;
      pFirstChar = pLastChar = target;
      while(*pLastChar != '\n')
	{
	  diffCount = 0;
	  sameCount = 1;
	  /*if(*(pLastChar+1) == '\n')
	    {
	      printStr(pLastChar,1);
	      pLastChar++;
	    }
	    else*/
	  if(*pLastChar == *(pLastChar + 1))
	    {
	      while(*pLastChar == *(pLastChar + 1) &&sameCount <= 8)
		{
		  sameCount++;
		  pLastChar++;
		}
	      printf("%d%c",sameCount,*pLastChar);
	      pLastChar++;
	      pFirstChar = pLastChar;
	    }
	  else
	    {
	      while(*pLastChar != '\n' && *pLastChar != *(pLastChar + 1))
		{
		  diffCount++;
		  pLastChar++;
		}
	      printStr(pFirstChar,diffCount);
	      /*	      printf("\n");*/
	      pFirstChar =  pLastChar;
	    }
	}
      if(*pLastChar == '\n')
	putchar('\n');
    }
  return 0;
}
int printStr(char *str, int len)
{
  int i;
  putchar('1');
  for(i = 0; i < len; i++)
    if(*(str+i) == '1')
      printf("11");
    else
      putchar(*(str+i));
  putchar('1');
  return 0;
}
 
分享到:
评论

相关推荐

    poj 1782 run length encoding 测试数据

    标题中的“poj 1782 run length encoding”是一个编程竞赛题目,源自著名的在线算法竞赛平台POJ(Programming Online Judge)。POJ是北京大学维护的一个在线编程评测系统,供程序员练习和测试自己的算法能力。1782是...

    Zero Run Length Encoding and Decoding, in matlab

    零长编解码(Zero Run Length Encoding,ZRL)是一种简单的数据压缩技术,主要用于减少连续重复数字0的数量,尤其在图像或文本数据中0频繁出现时效果显著。它的工作原理是将连续的零序列替换为一个标记,表示零的...

    RunLengthEnCodingandDecoding_decoding_run_runlengthencoding_

    标题“RunLengthEnCodingandDecoding_decoding_run_runlengthencoding_”指的是使用RLE进行图像的压缩和解压缩过程。** RLE的基本原理是将连续出现的相同值(例如,图像中的同一颜色像素)替换为该值和它连续出现的...

    rle.rar_RLE_Run Length_run_run length encoding_run-length

    Run Length Encoding(RLE)是一种简单的无损数据压缩算法,常用于处理连续重复的数据,尤其在图像处理和文本压缩中非常常见。RLE的核心思想是将连续出现的相同数据值用一个计数值和该值来表示,从而减少数据量,...

    使用rle(run length encoding)编码的例子(2KB)

    Run Length Encoding(RLE)是一种简单的无损数据压缩算法,主要应用于处理连续重复的数据。它通过统计连续出现的相同字符或数值,然后用一个字符(数值)和对应的计数来代替这一串重复的字符(数值),从而达到压缩...

    游程编码 c++ runlength encoding

    游程编码 c++ runlength encoding

    RLE.zip_run_run length encoding

    **运行长度编码(Run Length Encoding, RLE)是一种简单的无损数据压缩算法,它通过将连续重复的字符或字节序列替换为该字符或字节的出现次数来减少数据量。这种压缩方法在处理含有大量重复元素的数据时特别有效。在...

    使用RLE(Run Length Encoding)编码的例子(2KB)...

    RLE(Run Length Encoding)是一种简单的无损数据压缩算法,主要应用于处理连续重复的数据。它通过将连续出现的相同字符计数并存储为一对字符和计数值来减少数据量,从而实现压缩。在这个例子中,我们关注的是如何...

    Run Length Encoding and Decoding:这两个m文件用于RLE编解码。-matlab开发

    运行长度编码(Run Length Encoding, RLE)是一种简单的无损数据压缩算法,广泛应用于图像处理、文本压缩等领域。在 MATLAB 环境中,RLE 可以通过编写简单的 M 文件来实现。以下是对 RLE 编码和解码原理以及如何在 ...

    RLE Run Length Encoding:RLE Run Length Encoding and Irle Inverse Run Length Encoding-matlab开发

    运行长度编码(Run Length Encoding, RLE)是一种简单的无损数据压缩算法,广泛应用于图像处理、文本压缩等领域。它的基本思想是将连续重复的字符或数值用一对表示重复次数和该字符或数值的数据来替代,从而减少数据...

    RLE.zip_RLE_encoding_run length c++_run length code_run length e

    在众多的压缩算法中,Run Length Encoding(RLE)是一种简单且高效的无损压缩方法。本文将深入探讨RLE编码的概念、原理、C++实现以及其在实际应用中的价值。 **一、RLE编码概述** Run Length Encoding(RLE)是...

    rle.rar_RLE_RLE matlab _Run Length_matlab rle_run length encodin

    Run Length Encoding(RLE)是一种简单的数据压缩算法,它通过统计连续出现的相同数据值的个数来表示数据。在MATLAB中实现RLE,我们可以理解为如何利用这个编程环境来处理这种编码方式。MATLAB是一种强大的数值计算...

    RLC.rar_Run Length_lines_rlc_run length c++_run length code

    Run Length Encoding(RLE)是一种简单的无损数据压缩算法,常用于处理连续重复的数据。它通过统计连续相同字符的数量来压缩数据,将连续的重复字符转换为一个字符和对应计数的组合,从而达到减少数据量的目的。在...

    Run Length Encoding of SPIHT:SPIHT Run length encoding-matlab开发

    4. **游程编码(Run Length Encoding, RLE)**:游程编码是一种简单的无损数据压缩方法,它通过记录连续相同值的个数来减少数据量。在SPIHT中,游程编码用于编码小波系数的重要性级别,而不是直接的系数值,以进一步...

    霍夫曼(Huffman)和Run Length压缩编码

    霍夫曼编码(Huffman Coding)与Run Length Encoding(RLE)是两种常见的无损数据压缩算法,它们各自有其独特的工作原理和应用场景。 霍夫曼编码是一种基于频率的变长编码方法,由美国计算机科学家戴维·霍夫曼在...

    Run Length Encoding:Run Length Encoding - Loss less Coding Technique-matlab开发

    % rleenc - 运行长度编码算法% rleenc - 函数对二进制输入序列执行运行长度编码。 % ins - 输入序列% enc - 编码输出% % 例如,x=randint(1,10,[0 1]); % 会给你一个随机序列% 只有零和一。 % enc=rleenc(x);...

    grayrlmatrix.rar_Run Length_Run Length matlab_run_run-length

    在图像处理领域,"Run Length Encoding"(游程编码)是一种简单有效的无损压缩方法,尤其适用于处理二值图像或灰度图像中的连续相同像素。游程编码利用图像中连续同值像素的特点,将一段连续的像素值用该像素值和它...

    RLE.zip_run_run length c++_run length coding

    Run Length Encoding(RLE)是一种简单的无损数据压缩算法,常用于处理连续重复的数据,比如图像数据中的背景颜色。在图像处理中,如果一个颜色连续出现多次,通过记录该颜色出现的次数,而不是连续写入相同的像素值...

    16位rle(压缩bmp文件)压缩算法源码 (Dos, 16KB)

    这里我们关注的是“16位RLE(Run-Length Encoding)压缩算法”,这是一种简单且高效的无损压缩方法,尤其适用于处理具有大量重复数据的位图(BMP)文件。在给定的压缩包中,包含了实现该算法的源代码文件以及文档和...

    利用游程编码实现二值图像压缩.

    游程编码(Run Length Encoding,RLE)是一种简单的无损数据压缩技术,尤其适用于处理具有大量重复元素的数据,如二值图像。二值图像由黑白两种颜色组成,游程编码通过寻找并替换连续的相同颜色像素来减少数据量。...

Global site tag (gtag.js) - Google Analytics