zoukankan      html  css  js  c++  java
  • Run Length Encoding(POJ1782)

    题目链接:http://poj.org/problem?id=1782

    题意:对于一行输入的字符串

    1:重复字符构成的子字符串,用数字+字符表示缩短其长度,长度超过9则先用9+字符表示一段字符(剩余长度同理)

    例如:AAAAAA   输出  6A ,AAAAAAAAAA输出9A1A1.

    2:非重复字符构成的子字符,子字符串首尾均多输出一个'1',并且对于子字符串中的'1',输出为'11'

    例如:  B   输出   1B1             123  输出  111231
     

    代码:

    #include<iostream>
    #include<sstream>
    #include<cstdlib>
    #include<cmath>
    #include<algorithm>
    #include<cstring>
    #include<cstdio>
    #include<ctype.h>
    using namespace std;
    typedef long long ll;
    const int maxn=10005;
    int main(){
        ios::sync_with_stdio(false);
        int n;
        char str[maxn];
        while(gets(str)){               //输入包含空格
            int index, i = 0;
            int len = strlen(str);
            int flag = 0;               //标识符
            while(1){
                index = 1;
                while(str[i] == str[i+index] && index < 9 && i < len){
                    index++;
                }
                if(i == len){
                    if(flag == 1){
                        printf("1");
                    }
                    break;
                }
                else if(index == 1){
                    if(flag == 0){          //判断是否为新的非重复字符构成的子字符串,比如123中2的情况
                        printf("1");
                        flag = 1;
                    }
                    if(str[i] == '1'){      //非重复子字符串中的'1'输出均为'11';
                        printf("1");
                    }
                    printf("%c", str[i]);
                }
                else{
                    if(flag == 1){      //如果一个重复子字符串前面是一个非重复子字符串,输出一个'1'
                        printf("1");
                        flag = 0;
                    }
                    printf("%d%c", index, str[i]);
                }
                i += index;
            }
            printf("
    ");
        }
        return 0;
    }
  • 相关阅读:
    第一次作业
    冯娟的第五次作业
    冯娟的第三次作业
    冯娟的第四次作业
    冯娟的第二次作业
    数据压缩第一次作业
    第二次实验
    第三次实验
    第一次实验
    第五次作业
  • 原文地址:https://www.cnblogs.com/shmilky/p/14089009.html
Copyright © 2011-2022 走看看