排序

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]<<' ';
else
cout<<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<<' ';
else
cout<<*it<<endl;
}
}
return 0;
}

HDU——1106排序(istringstream的使用、STLvector练习)的更多相关文章

  1. hdu 1106 排序 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1106 这个题目一开始以为是水题,就想着用来轻松轻松,谁知道改得我想吐!! 除了discuss 中的数据 ...

  2. hdu 1106 排序(水题)

    题目描述: 输入一行数字,如果我们把这行数字中的'5'都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以'0'开头,这些头部的'0'应该被忽略掉,除非这个整数就是由若干个'0'组成的, ...

  3. HDU 1106 排序 题解

    排序 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...

  4. hdu 1106:排序(水题,字符串处理 + 排序)

    排序 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...

  5. hdu 1106 排序

    排序 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

  6. HDU 1106 排序 (排序+处理字符串)

    题意:略. 析:按照题目说的,把字符串分割,然后把字符串转成十进制,存起来,可以用数组,我用的向量, 排序一下就OK了.注意的是,要考虑多个5相邻的时候,刚开始没考虑WA了一次. 代码如下: #inc ...

  7. HDU 1106 排序(排序)

    输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数 ...

  8. hdu 1106 去5排序

    题目链接:https://vjudge.net/problem/HDU-1106 题目大意: 输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数 ...

  9. HDU 1106 (1.3.5) 排序 (C语言描述)

    排序 Problem Description 输入一行数字,如果我们把这行数字中的'5'都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以'0'开头,这些头部的'0'应该被忽略掉,除非 ...

随机推荐

  1. 使用ABAP批量下载有道云笔记中的图片

    Jerry喜欢用有道云笔记这款软件做自己的知识管理和知识体系的构建. 当您看到一篇好的有道云笔记分享时,可能会想将其精美的图片下载到本地.作为程序猿,我们不会去手动一张张下载.写个程序帮我们自动下载吧 ...

  2. Codeforces Round #321 (Div. 2) C Kefa and Park(深搜)

    dfs一遍,维护当前连续遇到的喵的数量,然后剪枝,每个统计孩子数量判断是不是叶子结点. #include<bits/stdc++.h> using namespace std; ; int ...

  3. KMP算法入门讲解

    字符串匹配问题.假设文本是一个长度为$n$的字符串$T$,模板是一个长度为$m$的字符串$P$,且$m\leq n$.需要求出模板在文本中的所有匹配点$i$,即满足$T[i]=P[0],T[I+1]= ...

  4. eubacteria|endosymbiosis|基因转移

    5.11线粒体和叶绿体是通过内共生进化而来的 初始细胞俘获有功能的真细菌(eubacteria)进入细胞内,该细菌逐渐演化为细胞器,这种现象称为内共生(endosymbiosis),所以该细胞器携带细 ...

  5. java基础—异常处理

    一.异常的概念 异常指的是运行期出现的错误,也就是当程序开始执行以后执行期出现的错误.出现错误时观察错误的名字和行号最为重要.

  6. 怎样将Oracle数据库设置为归档模式及非归档模式

    怎样将Oracle数据库设置为归档模式及非归档模式 1.Oracle日志分类 分三大类: Alert log files--警报日志,Trace files--跟踪日志(用户和进程)和 redo lo ...

  7. 用promise封装ajax

    首先贴代码 var ajaxOptions = { url: 'url', method: 'GET', async: true, data: null, dataType: 'text', } fu ...

  8. JWT (JSON WEB Token)正确使用场景

    https://www.jianshu.com/p/af8360b83a9f 讲真,别再使用JWT了! ThoughtWorks中国 2017.08.16 08:51* 字数 2882 阅读 7154 ...

  9. 【Redis】DENIED Redis is running in protected mode

    .修改redis服务器的配置文件 vi redis.conf 注释以下绑定的主机地址 # bind 127.0.0.1 .修改redis服务器的参数配置 修改redis的守护进程为no ,不启用 &g ...

  10. The 2018 ACM-ICPC Chinese Collegiate Programming Contest Maximum Element In A Stack

    //利用二维数组模拟 #include <iostream> #include <cstdio> #include <cstring> #include <s ...