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
你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。
输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。
今天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练习)相关推荐
- HDOJ HDU 1106 排序 ACM 1106 IN HDU
//MiYu原创, 转帖请注明 : 转载自 ______________白白の屋 题目地址 : http://acm.hdu.edu.cn/showproblem.php?pi ...
- hdu 1106 排序
排序 Time Limit: 2000/1000 MS (Java/Ot ...
- 18行代码AC_排序 HDU - 1106(sstream简单解法)
励志用少的代码做高效表达. Problem describe 输入一行数字,如果我们把这行数字中的'5'都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以'0'开头,这些头部的'0'应 ...
- HDU2109 Fighting for HDU【排序】
Fighting for HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) To ...
- hdu 4223 排序
Problem: http://acm.hdu.edu.cn/showproblem.php?pid=4223 求连续子序列和的绝对值的最小值 sum[i]储存前 i 个数的和 sum[y]-sum[ ...
- HDOJ 1106 排序
Problem Description 输入一行数字,如果我们把这行数字中的'5'都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以'0'开头,这些头部的'0'应该被忽略掉,除非这个整 ...
- HDOJ(HDU) 2109 Fighting for HDU(简单排序比较)
Problem Description 在上一回,我们让你猜测海东集团用地的形状,你猜对了吗?不管结果如何,都没关系,下面我继续向大家讲解海东集团的发展情况: 在最初的两年里,HDU发展非常迅速,综合 ...
- hdu 1106 字符串处理
这题主要用到字符串的分割,和字符型转换成整型,这其实可以用两个函数来代替. atoi这个函数原来做进制转换的时候就接触过.如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换 ...
- 杭电OJ分类题目(1)
原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(1) HDU Introduction HDU ...
最新文章
- html中和over怎么显示div,js 解决隐藏与显示div的相关问题
- Promise 的基本使用 与 Ajax的jQuery封装
- java crud事件回调_java回调机制 - 神是到着念的个人空间 - OSCHINA - 中文开源技术交流社区...
- 解读 2018之Go语言篇(下):明年有哪些值得期待?
- 搭建云计算机win10,win10家庭版连接云主机
- AcWing 795. 前缀和
- Android--获取当前系统的语言环境
- robotac属于a类还是b类_所得税A类和B类的区别,什么样的属于B类??
- 人脸对齐(八)--LBF算法
- Android开源框架ViewPageIndicator和ViewPager实现Tab导航
- 十天学会php之第七天
- 虚拟服务器修改教程,飘渺雪域商业一键虚拟端+修改元宝教程【无标题亲测
- 什么叫一层交换机,二层交换机,三层交换机?
- 用计算机算sin的按键顺序是什么,用计算器求sin50°的值,按键顺序是 [ ]A.B.C.D....
- 硬核干货|揭示波士顿动力机器人背后的专利技术(上)
- php guzzle的基本使用
- windows 下 redis服务经常自动关闭
- WFA发布LTE-U共存测试计划 Wi-Fi和LTE-U将公平共享频谱
- 身份证读卡器 浏览器插件
- java发送带图片的邮件代码