HDU——1106排序(istringstream的使用、STLvector练习)
来源:互联网 发布:linux libc 源代码 编辑:程序博客网 时间:2024/06/05 20:16
排序
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’组成。
输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。
Output
对于每个测试用例,输出分割得到的整数排序的结果,相邻的两个整数之间用一个空格分开,每组输出占一行。
Sample Input
0051231232050775
Sample Output
0 77 12312320
今天HDU11页上找找还有没有适合我这种菜鸟的水题时看别人的题解突然看到了这题。让我想起来做过的HDU——2072统计单词数。心里感觉这个东西可以进行输入重定向,但是就是百度了半天没百度到。还是去找了2072的代码(好吧2072也不完全是自己写的)。发现了这个玩意儿 istringstream(加上空格方便记忆,i string stream)
有了它这题写法比百度上的题解简单多了。偷个小懒嘿嘿
AC代码如下:
#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,以及迭代器。
AC代码:
#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;}
0 1
- HDU——1106排序(istringstream的使用、STLvector练习)
- HDU——2093考试排名(string类及其函数的运用以及istringstream)
- STLvector的内存问题
- stringstream,istringstream,ostringstream的使用
- istringstream 和 ostringstream 的使用例子
- istringstream用法,HDU1106排序
- 出圈问题C++源码(STLVector)
- C++中的istringstream 的用法 HDU 2072单词数
- C++中的istringstream 的用法 HDU 2072单词数
- C++笔记(三)istringstream 的用法
- 排序算法练习(快排&&堆排)——hdu 1040
- 下厨房(istringstream的使用)----网易2017内推笔试编程题合集
- <sstream>—istringstream、ostringstream、stringstream类
- istringstream的使用方法——ACM对输入数据的处理方法
- istringstream的使用方法——ACM对输入数据的处理方法
- istringstream的用法——处理未说明数量的一行输入
- istringstream的用法
- istringstream的用法
- java的成员变量和局部变量!
- 『Python』序列学习总结之三——字符串
- iOS-cell.selectedBackgroundView自定义
- Android UncaughtExceptionHandler进行全局异常捕获
- 印光大师:绮语者,说风流邪僻之话,令人心念淫荡。无知少年听久,必至邪淫以丧人格,或手淫以戕身命
- HDU——1106排序(istringstream的使用、STLvector练习)
- 框架编写之聊天框架认识(一)
- NSDate计算时间差
- JavaScript面向对象原理
- 设计模式基础——策略模式
- 在IntraWeb中使用模板
- C++ 解析Json——jsoncpp
- 梦参老和尚:弘一法师为何听到地藏经第十三品放声大哭
- 图层Layer