日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

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

發布時間:2023/11/27 生活经验 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU——1106排序(istringstream的使用、STLvector练习) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

排序

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


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

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


?

Input 輸入包含多組測試用例,每組輸入數據只有一行數字(數字之間沒有空格),這行數字的長度不大于1000。??

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


?

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


?

Sample Input 0051231232050775


?

Sample Output 0 77 12312320

今天HDU11頁上找找還有沒有適合我這種菜鳥的水題時看別人的題解突然看到了這題。讓我想起來做過的HDU——2072統計單詞數。心里感覺這個東西可以進行輸入重定向,但是就是百度了半天沒百度到。還是去找了2072的代碼(好吧2072也不完全是自己寫的)。發現了這個玩意兒?istringstream(加上空格方便記憶,i string stream)

有了它這題寫法比百度上的題解簡單多了。偷個小懶嘿嘿

代碼:

#include<iostream>
#include<string>
#include<sstream>
#include<algorithm>
using namespace std;
int power(int n,int cishu)//主要坑點還有這個,pow函數有誤差,不如自己寫一個
{int sum=1;for (int i=1; i<=cishu; i++){sum=sum*n;}return sum;
}
int sto(const string a)//string to int轉換函數。 
{int i,sum=0;int len=a.size();for (i=len-1; i>=0; i--)//有個好處可以不管開頭的0,從后往前的話前導0乘以權重還是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);//進行輸入重定向,格式為istringstream 重新定義的輸入函數名稱(源頭字符串) 		int num[1000]={},t=0,i;		while(sin>>k)//從str中向臨時變量k輸入,用這個好處就是可以直接忽略掉中間的空格跟,不管幾個{num[t]=sto(k);t++;//記錄個數 }				sort(num,num+t);for(i=0; i<t; i++){if(i!=t-1)cout<<num[i]<<' ';elsecout<<num[i]<<endl;}}return 0;		
}

?

剛學了vector和STL一些函數,加上之前又去再次了解了下istringstream,發現重定向后可以直接進行數字或者其他的輸入,不一定要是string。因此修改了下上面的代碼并且用vector和對容器的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;
}

轉載于:https://www.cnblogs.com/Blackops/p/5255243.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。