杭電oj 1106

來源:互聯網
上載者:User

標籤:mes   names   namespace   iss   忘記   tom   變數   任務   注釋   

排序

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 74104    Accepted Submission(s): 22754


Problem Description輸入一行數字,如果我們把這行數字中的‘5’都看成空格,那麼就得到一行用空格分割的若干非負整數(可能有些整數以‘0’開頭,這些頭部的‘0’應該被忽略掉,除非這個整數就是由若干個‘0’組成的,這時這個整數就是0)。

你的任務是:對這些分割得到的整數,依從小到大的順序排序輸出。

 

 

Input輸入包含多組測試案例,每組輸入資料只有一行數字(數字之間沒有空格),這行數位長度不大於1000。  

輸入資料保證:分割得到的非負整數不會大於100000000;輸入資料不可能全由‘5’組成。 

 

Output對於每個測試案例,輸出分割得到的整數排序的結果,相鄰的兩個整數之間用一個空格分開,每組輸出佔一行。 

 

Sample Input0051231232050775 

 

Sample Output0 77 12312320 這是我刷的杭電oj的第一題,我開始用的是c++,然後還有很多取巧的地方,結果是wa,害的我差點以為是杭電不支援vector這些庫,但其實人家是支援的,是我忘記了排除中間連續出現5的情況,害的我是用兩種方法解決的,但是這兩種方法的思想是一樣的,用的東西不一樣而已,下面是My Code,因為我比較懶,代碼思想是一樣的,唯寫一個的注釋。
#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<vector>using namespace std;int main(){    string a;//a是輸入的字串     while(cin>>a){        vector<long>b;//b是用來儲存分割得到的整數的。         string c;//c是臨時變數,用來儲存分割中的整數的         int j;        for(j=0;a[j]==‘5‘;j++);//排除開頭的連續‘5’         for(int i=j;i<a.length();i++){            if(a[i]!=‘5‘)c+=a[i];            else if(a[i-1]!=‘5‘){//如果是連續的5則不儲存多餘的數。                 b.push_back(atol(c.c_str()));                c="";            }        }        if(a[a.length()-1]!=‘5‘)//如果結尾不是‘5’,還需要將最後一個分割的整數儲存下來         b.push_back(atol(c.c_str()));        sort(b.begin(),b.end());//排序         cout<<b[0];        for(int i=1;i<b.size();i++){            cout<<" "<<b[i];        }        cout<<"\n";    }} 

 

#include<iostream>#include<cstdio>#include<algorithm>#include<string>using namespace std;int main(){    char a[1001] ;    long b[1000];    int k=0;    while(scanf("%s",a)!=EOF){        long s=0;        int j;        for(j=0;a[j]==‘5‘;j++);        int i;        for(i=j;a[i]!=‘\0‘;i++){            if(a[i]!=‘5‘)            {                s=s*10+a[i]-‘0‘;            }            else if(a[i-1]!=‘5‘){                b[k++]=s;                s=0;            }        }        if(a[--i]!=‘5‘)        b[k++]=s;        s=0;        sort(b,b+k);        for(int i=0;i<k;i++){            if(i==0)cout<<b[i];            else cout<<" "<<b[i];        }        cout<<"\n";        k=0;    }} 

 

杭電oj 1106

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.