zoukankan      html  css  js  c++  java
  • 报告论文:游程(行程)长度编码matlab(或者C++)实现

    游程(行程)长度编码matlab(或者C++)实现

     

    我需要的是算法实现,比如说我输入序列{1,0,0,0,0,1,1},输出为{11,04,12}.后面输出结果的含义是,"11"表示1的个数为1,"04"表示后面连续0的个数为4,"11"表示最后面出现连续1的次数为2次

     

    #include<iostream>

    #include <sstream>

    #include <string>

    using namespace std;

     

    string itostring(int x)

    {

           std::ostringstream o;

        if (o << x)

           {

                  return o.str();// 把x转换成1位字符输出

           }

           return 0;

    }

     

     

    int strlen(char str[])

    {

            int i,leng;

            i=0;

            while(str[i]!='\0')

            i=i+1;

            leng=i;

            return(leng);

     

    }

     

    void main()

    {

           int m=0,Len,j,n,count0=0,count1=0,b[100];

           cout<<"请输入一些二进制数据:\n";

           char data[100];

           cin >>data;

           Len=strlen(data);

           for(m=0;m<Len;m++)

           {

                  if(data[m]=='1')

                  {

                         for(;data[m]=='1';m++)

                         {

                                count1++;

                         }

                         cout<<"S1"<<itostring(count1);

                         count1=0;

                         m--;

                  }

                 

                  else

                  {

                         for(;data[m]=='0';m++)

                         {

                                count0++;

                         }

                         cout<<"S0"<<itostring(count0);

                         count0=0;

                         m--;

                  }

           }

     

    }

    运行结果:

     

    请输入一些二进制数据:

    111100001110011

    S14S04S13S02S12  Press any key to continue

     

    注意:

    我们考虑0、1序列中连续的1或0的个数超过 10个,如果超过会得出这样的结果:

    请输入一些二进制数据:

    1111100000000000011111111111100000

    S15S012S112S05  Press any key to continue

    这种结果也是可以接受的,我们用S1标识二进制“1”的个数,S0标识二进制“0”的个数。

     

    需要解决的问题是:

        怎么解决我们输入序列是任意字符 ,当然,你按照我的算法,在后面填加N 多个if(data[m]=='*’) 判断语句也行,但我是绝对不这么干的~~~

  • 相关阅读:
    快速指引(CDH6.3.2)
    gRpc 跨语言调用(NetCore 与 Spring Boot)
    Windows 极简利器
    Jenkins 于Docker 中源配置
    Kettle 问题
    在 Ubuntu 下直接将二进制文件制作成 rpm 包
    麒麟常见问题
    基于jssip的简单封装
    带有handleEvent的eventEmitter
    js集锦
  • 原文地址:https://www.cnblogs.com/Gemgin/p/3136487.html
Copyright © 2011-2022 走看看