• 二值游程编码


    游程编码是对数据压缩的一种方式,这写了一个简单的二值游程编码程序,程序功能如:原始输入:0001110011010100001100 ,压缩之后输出:33221111422

    也就是相当于记录每个值连续出现的次数,作为编码值。

    #include <iostream>
    #include <string>
    #include <vector>
    #include <queue>
    #include <iterator>
    using namespace std;
    
    int main()
    {
        string str("0001110011010100001100");
        queue<int> qu;
        vector<int> vec;
        //cin >> str;
        int len = str.length();
        int i = 0;
        while(len--)
        {
            qu.push(str[i++] - '0');
        }
        int a = qu.front();
        qu.pop();
        i = 1;
        while(!qu.empty())
        {
            if(a == qu.front())
            {
                i++;
                a = qu.front();
                qu.pop();
                //cout<<a;
            }
            else
            {
                vec.push_back(i);
                i = 1;
                a = qu.front();
                qu.pop();
                //cout<<a;
            }
        }
        vec.push_back(i);//一开始的时候这没有写,少了最后一项
        copy(vec.begin(),vec.end(),ostream_iterator<int>(cout,""));
        cout<<endl;
    
    }

    说明:这里简单的使用二值游程编码,当然也可以是字符进行类似编码,只需queue<char> 就行了。

  • 相关阅读:
    C#及时释放代码
    软件本质是什么?
    WCF学习
    android 更新ui
    ijkplayer视频播放
    androidstudio集成ijkplayer教程
    IJKPlayer问题集锦之不定时更新
    github上十二款最著名的Android播放器开源项目
    让ubuntu支持GBK编码AAAAA
    adb命令--之查看进程及Kill进程
  • 原文地址:https://www.cnblogs.com/zhuyp1015/p/2566446.html
Copyright © 2020-2023  润新知