matlab 图像处理 游程长度编码,报告论文:游程(行程)长度编码matlab(或者C++)实现...

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

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

#include

#include

#include

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<

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]=='*’) 判断语句也行,但我是绝对不这么干的~~~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值