日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

HDU——1106排序(istringstream的使用、STLvector练习)

發(fā)布時(shí)間:2023/11/27 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU——1106排序(istringstream的使用、STLvector练习) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

排序

Time Limit: 2000/1000 MS (Java/Others)????Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 46057????Accepted Submission(s): 13221


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

你的任務(wù)是:對(duì)這些分割得到的整數(shù),依從小到大的順序排序輸出。


?

Input 輸入包含多組測(cè)試用例,每組輸入數(shù)據(jù)只有一行數(shù)字(數(shù)字之間沒(méi)有空格),這行數(shù)字的長(zhǎng)度不大于1000。??

輸入數(shù)據(jù)保證:分割得到的非負(fù)整數(shù)不會(huì)大于100000000;輸入數(shù)據(jù)不可能全由‘5’組成。


?

Output 對(duì)于每個(gè)測(cè)試用例,輸出分割得到的整數(shù)排序的結(jié)果,相鄰的兩個(gè)整數(shù)之間用一個(gè)空格分開(kāi),每組輸出占一行。


?

Sample Input 0051231232050775


?

Sample Output 0 77 12312320

今天HDU11頁(yè)上找找還有沒(méi)有適合我這種菜鳥(niǎo)的水題時(shí)看別人的題解突然看到了這題。讓我想起來(lái)做過(guò)的HDU——2072統(tǒng)計(jì)單詞數(shù)。心里感覺(jué)這個(gè)東西可以進(jìn)行輸入重定向,但是就是百度了半天沒(méi)百度到。還是去找了2072的代碼(好吧2072也不完全是自己寫(xiě)的)。發(fā)現(xiàn)了這個(gè)玩意兒?istringstream(加上空格方便記憶,i string stream)

有了它這題寫(xiě)法比百度上的題解簡(jiǎn)單多了。偷個(gè)小懶嘿嘿

代碼:

#include<iostream>
#include<string>
#include<sstream>
#include<algorithm>
using namespace std;
int power(int n,int cishu)//主要坑點(diǎn)還有這個(gè),pow函數(shù)有誤差,不如自己寫(xiě)一個(gè)
{int sum=1;for (int i=1; i<=cishu; i++){sum=sum*n;}return sum;
}
int sto(const string a)//string to int轉(zhuǎn)換函數(shù)。 
{int i,sum=0;int len=a.size();for (i=len-1; i>=0; i--)//有個(gè)好處可以不管開(kāi)頭的0,從后往前的話(huà)前導(dǎo)0乘以權(quán)重還是0{sum+=(a[i]-'0')*power(10,len-1-i);}return sum;
}int main(void)
{string str,k;while(getline(cin,str)){for(int i=0; i<str.size(); i++)if(str[i]=='5') str[i]=' ';//將題目中要求的5替換為空格 istringstream sin(str);//進(jìn)行輸入重定向,格式為istringstream 重新定義的輸入函數(shù)名稱(chēng)(源頭字符串) 		int num[1000]={},t=0,i;		while(sin>>k)//從str中向臨時(shí)變量k輸入,用這個(gè)好處就是可以直接忽略掉中間的空格跟,不管幾個(gè){num[t]=sto(k);t++;//記錄個(gè)數(shù) }				sort(num,num+t);for(i=0; i<t; i++){if(i!=t-1)cout<<num[i]<<' ';elsecout<<num[i]<<endl;}}return 0;		
}

?

剛學(xué)了vector和STL一些函數(shù),加上之前又去再次了解了下istringstream,發(fā)現(xiàn)重定向后可以直接進(jìn)行數(shù)字或者其他的輸入,不一定要是string。因此修改了下上面的代碼并且用vector和對(duì)容器的sort,以及迭代器。

代碼:

?

#include<iostream>
#include<sstream>
#include<algorithm>
#include<vector>
using namespace std;
int main(void)
{string str;while(getline(cin,str)){for (int i=0; i<str.size(); i++){if(str[i]=='5')str[i]=' ';}int t;	vector<int>list;istringstream sin(str);while(sin>>t){list.push_back(t);}sort(list.begin(),list.end());for (vector<int>::iterator it=list.begin(); it!=list.end(); it++){if(it!=list.end()-1)cout<<*it<<' ';elsecout<<*it<<endl;}}return 0;
}

轉(zhuǎn)載于:https://www.cnblogs.com/Blackops/p/5255243.html

總結(jié)

以上是生活随笔為你收集整理的HDU——1106排序(istringstream的使用、STLvector练习)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。