zoukankan      html  css  js  c++  java
  • Codeforces34C【尺取】

    题意:
    输入一系列的数,连续数字则输出连续区间
    看第一个案例就很明显
    思路:
    输入字符串输入,预处理一下。
    写了个挫尺取…
    贴一发挫code…….

    #include <bits/stdc++.h>
    #include<algorithm>
    using namespace std;
    typedef long long LL;
    
    
    int a[102];
    int b[5];
    char s[500];
    bool vis[1010];
    
    int main()
    {
        while(~scanf("%s",s))
        {
            int x;
            int len=strlen(s);
            bool flag=false;
            memset(vis,0,sizeof(vis));
            x=0;
            for(int i=0;i<len;i++)
            {
                if(s[i]==',')
                {
                    int bb=0;
                    if(x)
                    {
                        for(int j=1;j<=x;j++)
                        {
                            bb=bb*10+b[j];
                        }
                    }
                    if(!vis[bb])
                    {
                        vis[bb]=1;
                    }
                    x=0;
                    flag=0;
                }
                else
                {
                    b[++x]=s[i]-'0';
                    flag=1;
                }
            }
            if(flag)
            {
                int bb=0;
                if(x)
                {
                    for(int j=1;j<=x;j++)
                    {
                        bb=bb*10+b[j];
                    }
                }
                if(!vis[bb])
                    vis[bb]=1;
            }
            int s,t;
            flag=false;
            for(s=1;s<1000;s++)
            {
                while(!vis[s]&&s<=1000)
                    s++;
                t=s;
                if(s>1000)
                {
                    if(vis[1000])
                    {
                        if(flag) printf(",");
                        printf("1000");
                    }
                    break;
                }
                while(vis[t]&&t<=1000)
                    t++;
                t--;
    
                if(s==t)
                {
                    if(flag) printf(",");
                    printf("%d",s);
                    flag=1;
                }
                else
                {
                    if(flag) printf(",");
                    printf("%d-%d",s,t);
                    flag=1;
                }
                s=t;
               //printf("%d %d
    ",s,t);
            }
            puts("");
        }
        return 0;
    }
  • 相关阅读:
    高效是如何来的
    find 删除指定日期的文件
    MySQL基础教程
    grep search information
    关于进程的问题
    linux useradd 命令
    host and ip 的关系
    git cherry-pick 教程
    正则练习
    正则表达式-获取
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/5934868.html
Copyright © 2011-2022 走看看