1. 程式人生 > 其它 >SWUST OJ 190 遊程編碼

SWUST OJ 190 遊程編碼

技術標籤:C語言程式設計c語言

swust oj 190

題目描述

遊程編碼又稱“執行長度編碼”或“行程長度編碼”,是一種統計編碼,該編碼屬於無失真壓縮編碼。對於二值圖有效。   RLE行程長度編碼概述   目前, 壓縮技術已經廣泛應用於各種軟體、聲音、影像格式等領域。總的來說, 有兩種截然不同的影象格式壓縮型別: 有失真壓縮和無失真壓縮[1]。有失真壓縮利用視覺識別的原理可以大大地壓縮檔案的資料, 但是會影響影象質量。無失真壓縮的基本原理是相同的顏色資訊只需儲存一次, 可以刪除一些重複資料, 大大減少要在磁碟上儲存的影象的容量。無失真壓縮方法的優點是能夠比較好地儲存影象的質量, 但是相對有失真壓縮來說這種方法的壓縮率是比較低的。常用的無失真壓縮演算法有 RLE、LZW 等。 RLE 壓縮演算法的基本原理   RLE(Run- Length Encoding 行程長度編碼)壓縮演算法是Windows 系統中使用的一種影象檔案壓縮方法, 其基本思想是: 將一掃描行中顏色值相同的相鄰畫素用兩個位元組來表示, 第一個位元組是一個計數值, 用於指定畫素重複的次數; 第二個位元組是具體畫素的值[2]。主要通過壓縮除掉資料中的冗餘位元組或位元組中的冗餘位,從而達到減少檔案所佔空間的目的。例如, 有一表示顏色畫素值的字串RRRRRGGBBBBBB,用 RLE 壓縮方法壓縮後可用 5R2G6B 來代替,顯然後者的串長度比前者的串長度小得多。譯碼時按照與編碼時採用的相同規則進行, 還原後得到的資料與壓縮前的資料完全相同。因此, RLE 是無失真壓縮技術。

輸入

在這裡插入圖片描述

輸出

在這裡插入圖片描述

樣例輸入

在這裡插入圖片描述

樣例輸出

在這裡插入圖片描述

原始碼

#include<stdio.h>
#include<string.h>
int main()
{
	char a[100],b[100];
	int i,j=0,len,c[100]={0};
	scanf("%s",a);
	len=strlen(a);
	for(i=0;i<len;i++)
	{
		b[j]=a[i];
		if(a[i]==a[i+1]) 
		c[j]+=1;
		else
		j++;
	}
	for(i=0;i<j;i++)
	printf("%d%c",
c[i]+1,b[i]); printf("\n"); return 0; }