oj1564:ランレングス符号化ループサザン2

タイトルは、必要な
、ランレングス符号化はまた、「ランレングス符号化」または「ランレングス符号化」と呼ばれる統計的符号化、符号コーディング可逆圧縮です。バイナリのための図に有効。
  RLEランレングス符号化は、概説され
  た圧縮技術が広くソフトウェア、オーディオ、ビデオ、および他のフォーマットの様々な分野で使用されてきた、現在。非可逆圧縮と可逆圧縮[1]:一般に、画像圧縮形式の2つの異なるタイプがあります。視認原理を用いた非可逆圧縮は、大幅にデータファイルを圧縮することができますが、画質に影響を与えます。基本的な原理は、あなたが大幅にディスク上に格納する画像の容量を小さく、いくつかの重複データを削除することができ、単純に時間節約の色情報の同じ可逆圧縮です。可逆圧縮の利点は、良好な画像の品質を維持する能力であるが、比較的非可逆圧縮は、この方法の圧縮比が比較的低いです。一般的に使用される可逆圧縮アルゴリズムのRLE、LZWなど。
RLE圧縮アルゴリズムの基本原理
  RLE(ランレングス符号化、ランレングス符号化)は、Windowsのファイル圧縮方式のシステムで使用される画像圧縮アルゴリズムであり、基本的な考え方は、2つの隣接する画素と、走査線内の同じ色の値表現バイト、最初のバイトはピクセルの繰り返しの数を指定するカウント値であり、2番目のバイトは、特定の画素値[2]です。冗長性は、ファイルによって占有バイト冗長ビットデータの圧縮または除去することによって主にバイト、従ってスペースを減少させます。例えば、RRRRRGGBBBBBB色画素値を示す文字列は、文字列の長さの見かけ上のランレングスが前者よりもはるかに小さいで使用5R2G6B RLE圧縮法、後に交換することができます。復号化のために使用されるのと同じ規則に従って、還元し、圧縮後のデータの前に、同一のデータを符号化します。したがって、RLEはロスレス圧縮技術です。

入力は
1つの文字列のみです。(100未満の長さ)
を出力
エンコードされた文字列。
入力サンプル
生は
iiiiillllovvveeeeeeeaaaccccccccmmmmmmmmmm
サンプルに出力を

5i4l1o3v7e3a8c10m
トピックは、それが再び開始する別の文字に遭遇するまで、ダウン同じ文字統計とカウントに隣接しています。
完全なコード

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stdio.h>
#include<string.h>
using namespace std;
int main() 
{
    char s[1000];
    char s1[500];
    int count = 1, n1 = 0;
    int num[100];
        cin >> 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;
}
公開された38元の記事 ウォン称賛27 ビュー3174

おすすめ

転載: blog.csdn.net/qq_45891413/article/details/105082497
おすすめ