hdu 1106排序 c语言解题

简介: hdu 1106排序 c语言解题

Problem Description


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


你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。


Input


输入包含多组测试用例,每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于1000。  


输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。



Output


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



Sample Input


0051231232050775



Sample Output


0 77 12312320



Source


POJ



代码如下:

#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
int main()
{
char str[1005],st[1005][1005],s[1005][1005];
char *p;
    int n,i,j,k,l;
//这里我用了<string.h>库中的strtok分隔字符函数。
while(scanf("%s",str)!=EOF)
{
n=0;
p=strtok(str,"5");
while(p)
{
strcpy(st[n],p);
strcpy(s[n],"0");
n++;
p=strtok(NULL,"5");
}
for(i=0;i<n;i++)
{
    l=0;
for(j=0;j<strlen(st[i]);j++)
{
if(st[i][j]!='0') break;
l++;
}
if(l==strlen(st[i])) strcpy(s[i],"0");
else 
for(k=0;k<=strlen(st[i])-l;k++)
s[i][k]=st[i][k+l];
}
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
    if(strlen(s[i])>strlen(s[j]))     
    {
        strcpy(str,s[i]);
        strcpy(s[i],s[j]);
        strcpy(s[j],str);
    }
    if(strlen(s[i])==strlen(s[j])) 
    {
        if(strcmp(s[i],s[j])>0)
         {
              strcpy(str,s[i]);
             strcpy(s[i],s[j]);
             strcpy(s[j],str);
         }
    }
}
}
for(i=0;i<n-1;i++)
printf("%s ",s[i]);
printf("%s\n",s[i]);
}
return 0;
}
目录
相关文章
|
2月前
|
编译器 C语言
C语言进阶⑯(自定义类型)项目:静态通讯录,增删查改排序打印。
C语言进阶⑯(自定义类型)项目:静态通讯录,增删查改排序打印。
33 1
|
2月前
|
存储 C语言
Leetcode—— 删除排序数组中的重复项——C语言
Leetcode—— 删除排序数组中的重复项——C语言
|
2月前
|
存储 搜索推荐 算法
C语言数据结构算法,常用10种排序实战
插入排序(Insertion Sort) 希尔排序(Shell Sort) 选择排序(Selection Sort) 冒泡排序(Bubble Sort) 归并排序(Merge Sort) 快速排序(Quick Sort) 堆排序(Heap Sort) 基数排序(Radix Sort)
20 1
C语言数据结构算法,常用10种排序实战
|
28天前
|
测试技术 C语言
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)
18 1
|
2月前
|
算法 搜索推荐 数据处理
C语言中的排序与查找技术详解
C语言中的排序与查找技术详解
26 1
|
28天前
|
存储 算法 安全
数据结构学习记录——图应用实例-拯救007(问题描述、解题思路、伪代码解读、C语言算法实现)
数据结构学习记录——图应用实例-拯救007(问题描述、解题思路、伪代码解读、C语言算法实现)
18 0
|
2月前
|
搜索推荐 C语言
【C语言/数据结构】排序(归并排序|计数排序|排序算法复杂度)
【C语言/数据结构】排序(归并排序|计数排序|排序算法复杂度)
24 0
|
2月前
|
C语言
【C语言/数据结构】排序(快速排序及多种优化|递归及非递归版本)
【C语言/数据结构】排序(快速排序及多种优化|递归及非递归版本)
21 0
|
C语言
C语言解题报告模板
问题及代码: /* Copyright (c) 2014, 烟台大学计算机学院 All rights reserved. 文件名称:test.cpp 作 者:贺利坚 完成日期:2016年 10 月 x 日 版 本 号:v1.0 题目描述  计算并输出它们串联电阻值 输入  两个电阻r1和r2的阻值 输出  一个整数,代表串联电阻的值 样例输入  1 2 样例
866 0
|
5天前
|
Java C语言 C++
定义C语言的int main()函数
定义C语言的int main()函数