zoukankan      html  css  js  c++  java
  • SDUT 2352 Run Length Encoding

    点我看题目 

    题意 :将给定的字符串编码,编码的规则根据两条,1.如果字符串里有连续相等的字符,就变为两个字符,一个是这些连续相同的字符的个数,另一个是这个字符,但是如果数量超过了9个,那就输出9再输出这个字符,剩下的重新按照规则进行,例如AAAA,就输出4A,AAAAAAAAAAA输出9A2A,2.如果字符串里有连续不相等的字符,就将这些字符原样输出并且在前后各加一个1,如果字符串里有刚好有个1,就将这个1变为11,AAAABCCC输出4A1B13C,123444输出11123134,1111111111输出911111。

    思路 :就是一道顶麻烦的题,如果不好好读题的话,就很难办,因为有很多细节问题都需要注意,比如说输入空格也算字符,输入换行也要处理。最后一组样例是10个1,按照编码规则先输出9个1,还剩一个1就要根据规则2进行编码,因为是1个1所以要在前后各加一个1,又因为是一个单独的1,所以要把1变成11

    #include <iostream>
    #include <string.h>
    #include <stdio.h>
    #include <algorithm>
    
    const int maxn = 424567 ;
    char sh[maxn] ;
    char ch[maxn] ;
    
    using namespace std;
    
    int main()
    {
        while(gets(sh))
        {
            int x = 0,j ;
            int len = strlen(sh) ;
            //   printf("%d",len);
            for(int i = 0 ; i < len ; )
            {
                j = i + 1;
                if(sh[i] == sh[j])
                {
                    while(sh[i] == sh[j])
                    {
                        j++ ;
                        if(j - i >= 9)
                            break ;
                    }
                    ch[x++] = j-i+'0' ;
                    ch[x++] = sh[i] ;
                    i += (j-i) ;
                }
                else
                {
                    while((sh[j] != sh[j+1] && j+1 < len) || j == len-1)
                        j++ ;
                    ch[x++] = '1' ;
                    for(int ii = i ; ii < j ; ii++)
                    {
                        ch[x++] = sh[ii] ;
                        if(sh[ii] == '1' )
                            ch[x++] = '1' ;
                        //if(j == 0 && sh[j] != sh[j+1])
                        //ch[x++] = '1' ;
                    }
                    ch[x++] = '1' ;
                    i += (j-i) ;
                }
            }
            ch[x] = '' ;
            printf("%s
    ",ch) ;
        }
        return 0;
    }
    View Code
  • 相关阅读:
    css3动画
    jquery和js进行添加样式
    网站基本了解
    新闻内容显示样式去除
    网页中常用的js特效
    手机和电脑同时兼容的网站
    使用repeter绑定数据的最高效率的方法
    常识(其他)
    OI暑假集训游记
    动态规划归纳(基础篇)
  • 原文地址:https://www.cnblogs.com/luyingfeng/p/3560782.html
Copyright © 2011-2022 走看看