题目描述:

  输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。

输入:

  输入包含多组测试用例,每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于1000。输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。

  例如:0051231232050775

输出:

  对于每个测试用例,输出分割得到的整数排序的结果,相邻的两个整数之间用一个空格分开,每组输出占一行。

  例如:0 77 12312320

解题思路:

  题目不难,注意细节。之前坑在了中间有一堆5的测试数据上。

  字符串转成整数的方法:sscanf函数(string.h头文件中)、atoi函数(stdlib.h头文件中)

  给出几个测试数据:

  (1)开头带一个5:5123

  (2)开头带许多5:55555123

  (3)结尾带一个5:1235

  (4)结尾带许多5:12355555

  (5)中间带许多5:12355555456

  (6)全零序列:000000000000000000000000000000000000000

  (7)没有5:123

AC代码:

 #include <stdio.h>
#include <string.h>
#include <vector>
#include <algorithm>
#include <functional> char szSeq[];
int iHead, iTail;
std::vector<int> vecNums; void Init()
{
vecNums.clear();
iHead = ;
iTail = strlen(szSeq);
} int GetNumber()
{
char szNum[] = { }; // 虽然数字大小不会超过100000000,但是如果很多的0呢,数组开小了,会越界。
int iCount = , iNum = -;
int flag = false; // false:未获取到数字;true:获取到数字
while (iHead < iTail && '' == szSeq[iHead]) ++iHead; // 处理数字前面的'5'
while (iHead < iTail && '' != szSeq[iHead]) // 获取数字
{
flag = true;
szNum[iCount++] = szSeq[iHead++];
}
if (true == flag)
sscanf(szNum, "%d", &iNum); //把字符转换成数字
return iNum;
} void OutPutVec()
{
for (std::vector<int>::iterator iter = vecNums.begin(); iter != vecNums.end(); ++iter)
{
if (iter == vecNums.begin())
printf("%d", *iter);
else
printf(" %d", *iter);
}
printf("\n");
} int main(void)
{
int iNum;
while (EOF != scanf("%s", szSeq))
{
Init(); //从数字序列中获取所有的数字放入vecNums容器中
while (- != (iNum = GetNumber()))
vecNums.push_back(iNum); std::sort(vecNums.begin(), vecNums.end(), std::less<int>()); OutPutVec();
}
return ;
}

hdu 1106 排序(水题)的更多相关文章

  1. hdu 5427(排序水题)

    排序 年轻的排前面 名字中可能有空格 Sample Input21FancyCoder 19962FancyCoder 1996xyz111 1997 Sample OutputFancyCoderx ...

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

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

  3. HDU排序水题

    1040水题; These days, I am thinking about a question, how can I get a problem as easy as A+B? It is fa ...

  4. hdu 5210 delete 水题

    Delete Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5210 D ...

  5. HDU——1106排序(istringstream的使用、STLvector练习)

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

  6. hdu 1106 排序 解题报告

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

  7. PAT甲题题解-1012. The Best Rank (25)-排序水题

    排序,水题因为最后如果一个学生最好的排名有一样的,输出的课程有个优先级A>C>M>E那么按这个优先级顺序进行排序每次排序前先求当前课程的排名然后再与目前最好的排名比较.更新 至于查询 ...

  8. PAT甲题题解-1062. Talent and Virtue (25)-排序水题

    水题,分组排序即可. #include <iostream> #include <cstdio> #include <algorithm> #include < ...

  9. hdu 1251 (Trie水题)

    统计难题 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)Total Submi ...

随机推荐

  1. JQuery 在循环中设置事件,最后一个覆盖了前面所有的设置

    function setValidation() {         for (i = 0; i < alValidations.length; i++) { //alValidations是一 ...

  2. nginx日志分割脚本

    [root@localhost nginx]# cat logs/nginx.pid 5118[root@localhost nginx]# kill -QUIT 5118-QUIT : 关闭进程-H ...

  3. 如何安装NodeJS到阿里云Centos (64位版本V5-7)

    如何安装NodeJS到阿里云Centos (64位版本V5-7) (Centos与Red Hat® Enterprise Linux® / RHEL, Fedora属于一类) 1) 安装v0.10版 ...

  4. ScrollView左右约束的坑

    问题:因为要适配iPad,有些页面拉伸会很难看,需要适配成下图样子,但是按照比例调整了ScrollView左右间距之后出现左右可以滑动,设置contentSize的X为0 不起作用,   之后多番尝试 ...

  5. leetcode-【中等题】5. Longest Palindromic Substring

    题目 Given a string S, find the longest palindromic substring in S. You may assume that the maximum le ...

  6. 织梦系统“当前位置”{dede:field.position}的修改方法

    dedecms中修改当前位置{dede:field.position},就是只要首页>一级栏目>二级栏目这样.找到include/typelink.class.php,找到这个文件里的这个 ...

  7. 41个Web开发者JavaScript实用小技巧

    1. 将彻底屏蔽鼠标右键 oncontextmenu="window.event.returnValue=false" < table border oncontextmen ...

  8. OAF屏蔽的错误

    ORACLE EBS中OAF屏蔽的错误 ORACLE EBS R12中引入了XML Publisher,Oracle Application Framework等新东西,利用网页/JSP技术增强For ...

  9. for..in遍历,枚举器

    #pragma mark ------------for循环遍历集合中的元素------ //创建一个数组,包含5个字符串对象,倒序取出数组中的所有元素,并存储到另一可变数组中 NSArray *ar ...

  10. Java代理(jdk静态代理、动态代理和cglib动态代理)

    一.代理是Java常用的设计模式,代理类通过调用被代理类的相关方法,并对相关方法进行增强.加入一些非业务性代码,比如事务.日志.报警发邮件等操作. 二.jdk静态代理 1.业务接口 /** * 业务接 ...