精华内容
下载资源
问答
  • 杭电1106

    2013-04-02 21:53:00
    杭电1106 WC: View Code 1 #include<iostream> 2 #include<string> 3 #include<vector> 4 #include<algorithm> 5 using namespace std; 6 7 s...

    WC:

    View Code
     1 #include<iostream>
     2 #include<string>
     3 #include<vector>
     4 #include<algorithm>
     5 using namespace std;
     6 
     7 string judge(string &s)
     8 {
     9     int i = 0;
    10     for(; i < s.size() && s[i] == '0'; ++i);
    11     string t(s.begin()+i, s.end());
    12     if(i == s.size())
    13         t = "0";
    14     s = t;
    15     return s;
    16 }
    17 void f(string& a, vector<string>& svec)
    18 {
    19     int beg, end;
    20     beg = 0;
    21     for(int i = 0; i < a.size(); ++i)
    22     {
    23         if(a[i] == '5')
    24         {
    25             string t(a.begin()+beg, a.begin()+i);
    26             svec.push_back(judge(t));
    27             while(a[i] == '5')
    28                 i++;
    29             beg = i;
    30         }
    31     }
    32     if(*(a.end()-1) != '5')
    33     {
    34         string t(a.begin()+beg, a.end());
    35         svec.push_back(judge(t));
    36     }
    37 }
    38 bool cmp(string a, string b)
    39 {
    40     int flag = true;
    41     if(a.size() != b.size())
    42         return a.size()<b.size();
    43     else
    44         return a<b;
    45 }
    46 
    47 void out(vector<string> s)
    48 {
    49     cout << s[0];
    50     for(int i = 1; i < s.size(); ++i)
    51         cout << " " << s[i];
    52     cout << endl;
    53 }
    54 int main()
    55 {
    56     string a;
    57     while(cin >> a)
    58     {
    59         vector<string> svec;
    60         f(a, svec);
    61         //out(svec);
    62         sort(svec.begin(), svec.end(), cmp);
    63         out(svec);
    64     }
    65     return 0;
    66 }

    没有考虑到555551这种情况:

    View Code
     1 #include<iostream>
     2 #include<string>
     3 #include<vector>
     4 #include<algorithm>
     5 using namespace std;
     6 
     7 string judge(string &s)
     8 {
     9     int i = 0;
    10     for(; i < s.size() && s[i] == '0'; ++i);
    11     string t(s.begin()+i, s.end());
    12     if(i == s.size())
    13         t = "0";
    14     s = t;
    15     return s;
    16 }
    17 void f(string& a, vector<string>& svec)
    18 {
    19     int beg, end;
    20     for(beg = 0; a[beg] == '5'; ++beg);//555551
    21     for(int i = beg+1; i < a.size(); ++i)
    22     {
    23         if(a[i] == '5')
    24         {
    25             string t(a.begin()+beg, a.begin()+i);
    26             svec.push_back(judge(t));
    27             while(a[i] == '5')
    28                 i++;
    29             beg = i;
    30         }
    31     }
    32     if(*(a.end()-1) != '5')
    33     {
    34         string t(a.begin()+beg, a.end());
    35         svec.push_back(judge(t));
    36     }
    37 }
    38 bool cmp(string a, string b)
    39 {
    40     int flag = true;
    41     if(a.size() != b.size())
    42         return a.size()<b.size();
    43     else
    44         return a<b;
    45 }
    46 
    47 void out(vector<string> s)
    48 {
    49     cout << s[0];
    50     for(int i = 1; i < s.size(); ++i)
    51         cout << " " << s[i];
    52     cout << endl;
    53 }
    54 int main()
    55 {
    56     string a;
    57     while(cin >> a)
    58     {
    59         vector<string> svec;
    60         f(a, svec);
    61         //out(svec);
    62         sort(svec.begin(), svec.end(), cmp);
    63         out(svec);
    64     }
    65     return 0;
    66 }

     

    posted on 2013-04-02 21:53 桑海 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/sanghai/archive/2013/04/02/2996572.html

    展开全文
  • 杭电 1106

    2017-03-18 20:56:22
    Problem Description 输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’...

    Problem Description

    输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。
    你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。

    Input

    输入包含多组测试用例,每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于1000。  
    输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。

    Output

    对于每个测试用例,输出分割得到的整数排序的结果,相邻的两个整数之间用一个空格分开,每组输出占一行。

    Sample Input

    
     

    0051231232050775

    Sample Output

    
     

    0 77 12312320

     

    
     

    #include <iostream> #include <string> #include <algorithm> using namespace std; int main() { int num[1001]; int num_z[1001]; string str; while(cin>>str) { int len_str=str.length(); memset(num,0,1001); str[len_str]='5'; int k=0; int m=0; for(int i=0;i<=len_str;i++) { if(str[i]!='5') { num_z[k++]=str[i]-'0'; } else { if(k==0) continue; for(int i=0;i<k;i++) { num[m]=num[m]*10+num_z[i]; } m++; k=0; } } sort(num,num+m); for(int i=0;i<m-1;i++) { cout<<num[i]<<" "; } cout<<num[m-1]<<endl; } return 0; } 

     

    展开全文
  • 杭电1106http://acm.hdu.edu.cn/showproblem.php?pid=1106 题目大意:给定一串字符串,以字符串中的‘5’为分割,且去除前导0后按从小到大顺序输出。 题目思路:对于每个以5为分割的字符串数字大小,可以以b[i...

    杭电1106 http://acm.hdu.edu.cn/showproblem.php?pid=1106

     

    题目大意:给定一串字符串,以字符串中的‘5’为分割,且去除前导0后按从小到大顺序输出。

    题目思路:对于每个以5为分割的字符串数字大小,可以以b[i]*10 + (a[i] - '0')计算得到。即每进一位*10;

    而对于分割的字符串,要分情况,第一种是遇到5,且前置一个字符不为5,这时b的计数下标要++,其次是遇到多个前导0,b下标只能+1次,若多个前导0出现在字符串中间,则归为前一种方案处理,若集中在最后,则需额外判断,即a[i]!='5'&&a[i+1]=='\0';注意是‘0’,此时下标才能++。

     

    AC代码:

    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include <stdlib.h>
    //#define DEBUG
    using namespace std;
    char a[1005];
    int b[1005];
    int num;
    bool f;
    int main() {
        while(cin>>a) {
            int len=strlen(a);
            num=0;
            f=0;
            memset(b,0, sizeof(b));
            for(int i=0;i<len;i++) {
               if(a[i]!='5') {
                   b[num]=b[num]*10+(a[i]-'0');
                   f=1;
               }
               else if(a[i]=='5'&&f) {   //这个else if可以说是精髓所在。f用于判断
                   num++;
                   f=0;
               }
               if(a[i]!='5'&&a[i+1]=='\0') { //'\0'
                   num++;
               }
    
            }
            sort(b,b+num);
            for(int i=0;i<num-1;i++) {
                cout<<b[i]<<" ";
            }cout<<b[num-1]<<endl;
        }
        
        return 0;
    }
    

     

    展开全文
  • 杭电1106 排序

    千次阅读 2011-11-17 15:04:28
    /********************************* ... * 题号:杭电1106  * 题目:排序  * 结果:AC  * 题意:  * 总结: **********************************/ #include #include #include

    /*********************************
     *    日期:2011-3-11
     *    作者:SJF
     *    题号:杭电1106
     *    题目:排序
     *    结果:AC
     *    题意:
     *    总结:
    **********************************/
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    int cmp(const void*a,const void*b)
    {
        return *(int *)a-*(int *)b;
    }
    int main()
    {   
        char number[1001];
        while(scanf("%s",number)!=EOF)
        {
            int i,len,k=0,flag=0;
            int num[1001];
            memset(num,0,sizeof(int)*1001);
            len=strlen(number);
            for(i=0;i<len;)
            {
                if(number[i]=='5')
                {
                    i++;
                }
                while(number[i]!='5'&&i<len)
                {
                    num[k]=num[k]*10+number[i]-48;
                    i++;
                    flag=1;
                }
                if(flag==1)
                {
                    k++;
                    flag=0;
                }
            }
            qsort(num,k,sizeof(int),cmp);
            for(i=0;i<k-1;i++)
            {
                printf("%d ",num[i]);
            }
            printf("%d\n",num[k-1]);
        }
        return 0;
    }

     

     


     

     

     

     

     

     


     

     

     

     

    展开全文
  • 杭电1106题字符串的拆解、排序 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1106 之前是用模拟直接做的,结果不断WA不断找坑改进代码,还是AC不了,没办法就看大神的博客,发现字符数组拆解加字符串转换成...
  • 杭电 1106 排序

    2015-07-22 15:19:04
    排序 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 41692 Accepted Submission(s): 11951 ...输入一行数字,如果我们把这行数字中的‘5’都看
  • 杭电1106』排序

    2020-06-05 08:56:24
    Problem Description 输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’...
  • 杭电1106-- 排序

    2019-10-03 07:43:36
    排序 Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 41614Accepted Submission(s): 11924 Problem Description 输入一行数字,如果我们把这行数字中的...
  • 此题的重点 在于思维的全面性 由题意可以知道 中间的字符分割可以用5的存在来判断(这里还有注意多个5存在的情况)之后别忘了特殊情况的处理 比如初始值的确定(首字母是不是5) 已经末尾没有5的时候怎么去取值 ...
  • 排序(杭电1106

    2017-07-03 14:38:00
    /*排序 Problem Description 输入一行数字,假设我们把这行数字中的‘5’都看成空格,那么就得到一行用空格切割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由...
  • 杭电1106--替换空格

    2015-10-24 19:50:09
    排序 Problem Description 输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 396
精华内容 158
关键字:

杭电1106