HHUOJ_1349: 分割排序
来源:互联网 发布:炸群软件 编辑:程序博客网 时间:2024/06/05 00:54
HHUOJ_1349: 分割排序
题目描述
输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。
你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。
输入
输入包含多组测试数据。每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于1000。
输入数据保证:分割得到的非负整数不会大于100000000,输入数据不可能全由‘5’组成。
输出
对于每个测试用例,输出分割得到的整数排序的结果,相邻的两个整数之间用一个空格分开,每组输出占一行。
样例输入
0051231232050775
样例输出
0 77 12312320
思路
这是一道非常水的题…但是WA了好多次…主要是因为考虑的不全面…
1. 注意有多个前缀5
2. 注意数据中间有多个5
3. 注意何种情况才能输出0
代码
#include <iostream>#include <cstring>#include <algorithm>using namespace std;char s[1010];int ans[1010];int main(){ while(cin>>s){ int len = strlen(s); s[len] = '5'; int sum = 0; int cnt = 0; int pre = 0; while(s[pre++]=='5');//跳过前缀5,防止输出0 for(int i=pre-1; i<=len; i++){ if(i>0 && s[i]=='5' && s[i-1] == '5'){//跳过数据中间有多个5的情况 continue; } if(s[i] != '5'){ sum = sum*10 + (s[i]-'0'); }else { ans[cnt++] = sum; sum = 0; } } sort(ans, ans+cnt); cout<<ans[0]; for(int i=1; i<cnt; i++){ cout<<' '<<ans[i]; } cout<<endl; } return 0;}
阅读全文
0 0
- HHUOJ_1349: 分割排序
- 分割排序
- 快速排序:分割。
- 1050:分割排序
- hdu1106 排序 (分割字符串)
- 快速排序 一般分割
- 快速分割排序
- HBUOJ.分割排序
- android中文首字母排序、分割
- 快速排序中的霍尔分割
- 快速排序一趟分割,单循环
- 实际快速排序 -分割策略
- 快速排序之分割数组
- 数据分割排序的实现
- Linux/Unix排序、合并与分割
- 文件的排序、合并和分割
- shell:文件的排序、合并和分割
- Linux文件的合并、排序和分割
- iPhone X(10)屏幕分辨率与适配
- Activemq 的topic总结
- poj 3164 通信网络 最小树状图
- SpringBoot项目导入外部服务器
- 按钮改变文字大小颜色
- HHUOJ_1349: 分割排序
- string公共函数
- Java经典算法例子大全
- Python中unittest框架写测试用例
- 漫画:什么是MD5算法
- iOS 屏幕尺寸、逻辑分辨率、物理分辨率之间的相互关系
- python学习笔记 第一章
- C++ IO流
- HTML学习总结