题目描述:

  输入一行数字,如果我们把这行数字中的‘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. python字典嵌套字典的情况下获取某个key的value

    最近在用python写接口的测试程序,期间用到解析字典获取某个key的value,由于多个接口返回的字典格式不是固定的并存在多层嵌套的情况.在字典的方法中也没有找到可直接达到目的的方法(也可能是我对字 ...

  2. 软件调试——CPU异常列表

    CPU异常主要分为三类:错误类异常,陷阱类异常和终止类异常 1 错误类异常 Fault CPU遇到该类异常后,会先将CS和EIP(当前发生错误的指令,而不是下一条指令)压栈,然后跳到异常处理函数中,执 ...

  3. android开发--数据库(更新或者降低版本)

    Andoird的SQLiteOpenHelper类中有一个onUpgrade方法. 1. 帮助文档里说的"数据库升级"是指什么? 你开发了一个应用,当前是1.0版本.该程序用到了数 ...

  4. What is Agile

    Agile is a set of Values, Principles and Practices, that will change your behavior to will create gr ...

  5. (分享)Paxos在大型系统中常见的应用场景

    原帖http://timyang.net/distributed/paxos-scenarios/ 在分布式算法领域,有个非常重要的算法叫Paxos, 它的重要性有多高呢,Google的Chubby ...

  6. 使用spring手动获取Bean的时候,不能强转回它自己。

    这个问题好像有点长,描述一下: 就是通过类名的方式获取Bean后,得到一个Object对象,但是这个Object不能再强转回Bean了.抛出的异常时类型转换异常.  java.lang.ClassCa ...

  7. NRF51822之ADC(1)

    在开始讲解的前,我们不生产水,我们只是大自然的搬运工.开始搬手册(nRF51 Series Reference Manual Version 3.0)上的资料

  8. 常用COBOL函数

    本文来自(http://refer.it-manual.com/cobol.html) COBOL関数(JIS-COBOL規格標準)の一覧表を掲載しています. COBOL関数一覧表は.各項目での並べ替 ...

  9. jenkins配置自动发送邮件

    1.开通QQ的SMTP服务,需要发一条短信,qq会给你一个密码(不是你的QQ邮箱密码哦) 2.安装 Email Extension Plugin 插件 3.进入系统管理--系统设置 3.1按照如下图设 ...

  10. Delphi里如何让程序锁定在桌面上,win+d都无法最小化

    procedure TForm29.FormCreate(Sender: TObject); begin Windows.SetParent(Self.Handle, FindWindowEx(Fin ...