数字
时间限制: 1000ms内存限制: 128000KB 64位整型: Java 类名:
上一题 提交 运行结果 统计 讨论版 下一题
类型:
没有
添加
题目描述
有一行数字 ,现在定义 0表示空格,即这行数字被分割成若干个数 要求将这些数按照从小到大顺序排列,若该行数字全为零 则表示为零,两个数字之间可能有多个0,开头和结尾可能都有0,所有的0都看成空格,数字的个数不超过100。
输入
输入有n组数据
每组数据都有一行数字(每个数在整形范围内)
输出
输出0或去掉多余空格的数据
样例输入
4
000
00123
12301
1230
样例输出
0
123
1 123
123
来源
NYOJ
时间限制: 1000ms内存限制: 128000KB 64位整型: Java 类名:
上一题 提交 运行结果 统计 讨论版 下一题
类型:
没有
添加
题目描述
有一行数字 ,现在定义 0表示空格,即这行数字被分割成若干个数 要求将这些数按照从小到大顺序排列,若该行数字全为零 则表示为零,两个数字之间可能有多个0,开头和结尾可能都有0,所有的0都看成空格,数字的个数不超过100。
输入
输入有n组数据
每组数据都有一行数字(每个数在整形范围内)
输出
输出0或去掉多余空格的数据
样例输入
4
000
00123
12301
1230
样例输出
0
123
1 123
123
来源
NYOJ
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
const int maxn=105000;
char s[maxn],temp[maxn];
int ans[maxn];
int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int i,len,k=0,j=0;
scanf("%s",s);
len=strlen(s);
for(i=0;i<=len;i++)
{
if(s[i]=='0'||i==len)
{
temp[j]='\0';
if(strlen(temp))
ans[k++]=atoi(temp);
memset(temp,0,sizeof(temp));
j=0;
}
else
temp[j++]=s[i];
}
if(k==0)
{
printf("0\n");
continue;
}
qsort(ans,k,sizeof(ans[0]),cmp);
for(i=0;i<k;i++)
printf("%d ",ans[i]);
printf("\n");
}
}