行程编码与译码

#include<iostream> using namespace std; int main() { //行程编码 char str[1000]={‘/0′};//用于存放字符 int count[1000]={1};//用于计数对应字符的个数 int i=1,k=0;//i用于字符索引 k用于计数索引 char c;//用于暂存扫描到的字符 str[0]=getchar();//将字符数组的第一个元素初始化 while(c=getchar()) { //输入#号结束输入 跳出循环 if(c==’#’) break; else { if(c==str[i-1])//当输入字符和前一个一样时,不对字符数组赋值,而计数 count[k]++; else { str[i++]=c;//如果不同时,增加一个空间用于存放字符 count[++k]=1;//同时新增一个计数空间,并初始化为1 } } } //在字符串后面添加结束标志# 数组最后添加一个结束标志-1 str[i]=’#’;count[++k]=-1; //按照编码要求输出 for(int j=0;j<1000;j++) { if(str[j]==’#’||count[j]==-1) break; else cout<<“(“<<str[j]<<“,”<<count[j]<<“)”<<‘/t’; } cout<<endl; //解码程序 cout<<“解码如下”<<endl; for(int m=0;m<1000;m++) { if(str[m]==’#’||count[m]==-1) break; else for(int n=0;n<count[m];n++) cout<<str[m]; } cout<<endl; return 0; }

    原文作者:游程编码问题
    原文地址: https://blog.csdn.net/yk3372/article/details/6174691
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞