hdu 1106 排序(水题)
题目描述:
输入一行数字,如果我们把这行数字中的‘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 排序(水题)的更多相关文章
- hdu 5427(排序水题)
排序 年轻的排前面 名字中可能有空格 Sample Input21FancyCoder 19962FancyCoder 1996xyz111 1997 Sample OutputFancyCoderx ...
- hdu 1106:排序(水题,字符串处理 + 排序)
排序 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...
- HDU排序水题
1040水题; These days, I am thinking about a question, how can I get a problem as easy as A+B? It is fa ...
- hdu 5210 delete 水题
Delete Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5210 D ...
- HDU——1106排序(istringstream的使用、STLvector练习)
排序 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...
- hdu 1106 排序 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1106 这个题目一开始以为是水题,就想着用来轻松轻松,谁知道改得我想吐!! 除了discuss 中的数据 ...
- PAT甲题题解-1012. The Best Rank (25)-排序水题
排序,水题因为最后如果一个学生最好的排名有一样的,输出的课程有个优先级A>C>M>E那么按这个优先级顺序进行排序每次排序前先求当前课程的排名然后再与目前最好的排名比较.更新 至于查询 ...
- PAT甲题题解-1062. Talent and Virtue (25)-排序水题
水题,分组排序即可. #include <iostream> #include <cstdio> #include <algorithm> #include < ...
- hdu 1251 (Trie水题)
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submi ...
随机推荐
- 【node】使用gulp来维护网站项目
基本参照此:http://www.gulpjs.com.cn/docs/getting-started/ 1.电脑需要安装好nodejs,安装好的时候会自带npm 2.在命令行中执行命令安装gulp ...
- Bootstrap框架(基础篇)之按钮,网格,导航栏,下拉菜单
一,按钮 注意:虽然在Bootstrap框架中使用任何标签元素都可以实现按钮风格,但个人并不建议这样使用,为了避免浏览器兼容性问题,个人强烈建议使用button或a标签来制作按钮. 框架中提供了基础按 ...
- Jsoup使用随记
这段时间工作比较空闲,在网上找资料学习的时候看到数据抓取这一块,来了兴趣 用jsoup实现数据抓取着实方便,唯一美中不足的是官方API是英文版的,对我这样英语水平不好的程序员来说着实困扰,只能一点点的 ...
- Mongodb故障转移
测试环境 四台测试服务器10.151.151.150:27017(主节点),10.151.151.151:27017(从节点),10.151.151.152:27018(从节点),10.151.151 ...
- Hibernate单元测试工具junit
相关注解 @Text :测试方法 @Before :初始化方法 @After : 释放资源
- jquery.validate[.unobtrusive]和Bootstrap实现tooltip错误提示
类似的文章园子里已有,请看这里,个人感觉稍显复杂,日前也打算写一个简单的给项目用,一些关键点记录于此.最终效果如下: 后端使用Asp.net mvc5,前端框架有:jquery.validate.jq ...
- Java 7 新特性
try( InputStream is = new FileInputStream(path); XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is); ) ...
- Windows内核原理系列01 - 基本概念
1.Windows API Windows 应用编程接口(API)是针对WIndwos操作系统用户模式的系统编程接口,包含在WindwosSDK中. 2.关于.NET .NET由一个被称为FCL的类库 ...
- Python发送邮件(支持中文)
# -*- coding: utf-8 -*- from email.header import Header from email.mime.text import MIMEText import ...
- 通过profiler对unity进行针对性优化
转 : http://user.qzone.qq.com/289422269/blog/1453815629?ptlang=2052 通过profiler对unity进行针对性优化 1. CPU U ...