21行代码AC——HDU1106 排序
Problem Description
輸入一行數(shù)字,如果我們把這行數(shù)字中的‘5’都看成空格,那么就得到一行用空格分割的若干非負(fù)整數(shù)(可能有些整數(shù)以‘0’開頭,這些頭部的‘0’應(yīng)該被忽略掉,除非這個整數(shù)就是由若干個‘0’組成的,這時這個整數(shù)就是0)。
你的任務(wù)是:對這些分割得到的整數(shù),依從小到大的順序排序輸出。
Input
輸入包含多組測試用例,每組輸入數(shù)據(jù)只有一行數(shù)字(數(shù)字之間沒有空格),這行數(shù)字的長度不大于1000。
輸入數(shù)據(jù)保證:分割得到的非負(fù)整數(shù)不會大于100000000;輸入數(shù)據(jù)不可能全由‘5’組成。
Output
對于每個測試用例,輸出分割得到的整數(shù)排序的結(jié)果,相鄰的兩個整數(shù)之間用一個空格分開,每組輸出占一行。
分析
本題采用的解法是:字符型<->整型轉(zhuǎn)化+字符串分割。
主要思路:
1、將輸入樣例用string字符串保存,若遇到‘5’,則將‘5’改為空格。
2、通過#include<sstream>中的stringstream,配合循環(huán),實現(xiàn)將字符串轉(zhuǎn)化為整型變量,存入vector數(shù)組。(vector為動態(tài)數(shù)組,不用事先定義較大空間,要多少就開多少。)
3、用#include<algorithm>中的sort(),對vector數(shù)組進(jìn)行排序。
4、逐個輸出即可。
傳送門
傳送門1——>algorithm頭文件常用函數(shù)匯總
傳送門2——>神奇的sstream頭文件(用法匯總)
代碼實現(xiàn)
#include<bits/stdc++.h> using namespace std; int main() {char a;string s;while(cin >> s) {int len = s.length();for(int i = 0; i < len ;i++) if(s[i] == '5') s[i] = ' ';//處理 stringstream ss; ss << s;int num; vector<int>v; int j =0;while(ss >> num) v.push_back(num);//排序后輸出 sort(v.begin(),v.end());int siz = v.size();for(int i = 0; i < siz; i++) cout << v[i] << ((i!=(siz-1))?" ":"");cout << endl; }return 0; }總結(jié)
以上是生活随笔為你收集整理的21行代码AC——HDU1106 排序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络 数据段、报文、IP数据报、数
- 下一篇: 10行代码AC——UVa 10940(T