游程(行程)长度编码matlab(或者C++)实现html
我须要的是算法实现,好比说我输入序列{1,0,0,0,0,1,1},输出为{11,04,12}.后面输出结果的含义是,"11"表示1的个数为1,"04"表示后面连续0的个数为4,"11"表示最后面出现连续1的次数为2次ios
#include算法
#include post
#include 编码
using namespace std;spa
string itostring(int x)htm
{blog
std::ostringstream o;ci
if (o << x)string
{
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<
char data[100];
cin >>data;
Len=strlen(data);
for(m=0;m
{
if(data[m]=='1')
{
for(;data[m]=='1';m++)
{
count1++;
}
cout<
count1=0;
m--;
}
else
{
for(;data[m]=='0';m++)
{
count0++;
}
cout<
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]=='*’) 判断语句也行,但我是绝对不这么干的~~~