题目描述:

  输入一行数字,如果我们把这行数字中的‘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. eclipse下的webservice开发

    关于eclipse下的webservice开发,有非常多的教程,这里只记下学习过程中的弯路: 1.无论是CXF模式还是AXIS模式,在出现start server之后,点击next报错:"s ...

  2. ABP的第一个程序和遇到的一些问题

    ABP在这里就不多介绍了.在这篇文章中主要介绍使用模板生成的ABP项目使用遇到的一些问题. 1.首先在http://www.aspnetboilerplate.com/ 官方网站上创建一个模板项目, ...

  3. Oracle系统学习摘要

    对于企业级大型系统,Oracle数据库的重要性不言而喻,作为长期使用Sql server的developer,花了点时间学习了一个Oracle的系列课程,总结一下. 1.oracle一些基础命令 sq ...

  4. 部署samba服务之后,在客户端用挂载访问的方式,错误信息:mount: block device //192.168.1.108/mysqldata is write-protected, mounting read-only mount: cannot mount block device //192.168.1.108/mysqldata read-only

    部署samba服务之后,在客户端用挂载访问的方式,错误信息:mount: block device //192.168.1.108/mysqldata is write-protected, moun ...

  5. 提权GrantPrivilege

    大概一个多月前学习了提权的知识,当时一直不知道提权到底具体是为了干什么.只是模糊的知道提高权限,获得别的进程的一些东西.后来慢慢的学习的多了,知道了一个叫做ReadProcessMemory的函数,第 ...

  6. oracle的over函数应用(转载)

    摘自: http://www.poluoluo.com/jzxy/201004/81921.html 百度文库也记载了Oracle中over()分析函数的用法 在泡坛子的时候中无意中发现了这个函数,才 ...

  7. YCSB测试Mysql,MongoDB,TokuMX,Couchbase性能

    测试是由同事完成的,这里只做收藏. 测试说明: 1.数据量为3kw记录,每条记录11个字段,一个为主键,主键为字符类型,类似:user****,后续为数值 其他10字段为字符类型,100字符,记录长度 ...

  8. Android 5.0属性

    //水波纹效果//v 指定控件 x屏幕的 x轴 y轴 endRadio 起始位置 水波半径Animator circularReveal = ViewAnimationUtils.createCirc ...

  9. asp.net MVC上传图片完整方法

    图片上传 自动创建文件夹并重命名(带缩略图) 后台: [HttpPost] public ActionResult WanSell_UploadPicture(ProductGalleryModels ...

  10. 多行SQL语句拼成一条数据

    将多条数据组合到一行 ) set @sql='select ''roleinfo:''' ) declare cursor1 cursor for select id from Userrole wh ...