zoukankan      html  css  js  c++  java
  • 二值游程编码

    游程编码是对数据压缩的一种方式,这写了一个简单的二值游程编码程序,程序功能如:原始输入: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> 就行了。

  • 相关阅读:
    toj 2819 Travel
    toj 2807 Number Sort
    zoj 2818 Prairie dogs IV
    zoj 1276 Optimal Array Multiplication Sequence
    toj 2802 Tom's Game
    toj 2798 Farey Sequence
    toj 2815 Searching Problem
    toj 2806 Replace Words
    toj 2794 Bus
    css截取字符
  • 原文地址:https://www.cnblogs.com/zhuyp1015/p/2566446.html
Copyright © 2011-2022 走看看