21行代码AC——HDU1106 排序
生活随笔
收集整理的這篇文章主要介紹了
21行代码AC——HDU1106 排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Problem Description
輸入一行數字,如果我們把這行數字中的‘5’都看成空格,那么就得到一行用空格分割的若干非負整數(可能有些整數以‘0’開頭,這些頭部的‘0’應該被忽略掉,除非這個整數就是由若干個‘0’組成的,這時這個整數就是0)。
你的任務是:對這些分割得到的整數,依從小到大的順序排序輸出。
Input
輸入包含多組測試用例,每組輸入數據只有一行數字(數字之間沒有空格),這行數字的長度不大于1000。
輸入數據保證:分割得到的非負整數不會大于100000000;輸入數據不可能全由‘5’組成。
Output
對于每個測試用例,輸出分割得到的整數排序的結果,相鄰的兩個整數之間用一個空格分開,每組輸出占一行。
分析
本題采用的解法是:字符型<->整型轉化+字符串分割。
主要思路:
1、將輸入樣例用string字符串保存,若遇到‘5’,則將‘5’改為空格。
2、通過#include<sstream>中的stringstream,配合循環,實現將字符串轉化為整型變量,存入vector數組。(vector為動態數組,不用事先定義較大空間,要多少就開多少。)
3、用#include<algorithm>中的sort(),對vector數組進行排序。
4、逐個輸出即可。
傳送門
傳送門1——>algorithm頭文件常用函數匯總
傳送門2——>神奇的sstream頭文件(用法匯總)
代碼實現
#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; }總結
以上是生活随笔為你收集整理的21行代码AC——HDU1106 排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络 数据段、报文、IP数据报、数
- 下一篇: 10行代码AC——UVa 10940(T