注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

告别迷茫

梦想与现实的差距,就是我们生活的意义。因为我们有差距,我们才会一直积累,在努力。

 
 
 

日志

 
 

HDU 1106 排序 二维数组的使用;  

2014-04-01 22:19:42|  分类: HDU |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

排序

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 31762    Accepted Submission(s): 8872


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

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

 

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

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

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

Sample Input
0051231232050775
 

Sample Output
0 77 12312320
 

Source
 

Recommend
Eddy   |   We have carefully selected several similar problems for you:  1108 1004 1391 1166 1020 

#include<stdio.h>
#include<string.h>
#include<algorithm>
bool cmp(int a,int b)
{
return a<b;
}

int a[1008];
char b[1009],c[1006][1006];
int main()
{
int i,j,sum,len,flag,p;
while(gets(b))
{
flag=0,p=0,j=0;
memset(c,'\0',sizeof(c));//初始使用;
len=strlen(b);
for(i=0;i<=len;i++)
{
if(b[i]=='5')//第一个 第二个
{
if(b[i+1]=='5') continue;
else if(b[i+1]=='\0') break;//最后的处理
else if(flag)//注意55555123444 这里;wa le hen jiu
{

j=0;
p++;
flag=0;
}
}
else
{
c[p][j++]=b[i];//二维的数组保持不同的数字的大小;
flag=1;
}
}

for(i=0;i<=p;i++)
{
sum=0;
for(j=0;j<strlen(c[i]);j++)//字符转换为数字的过程;
{
sum=sum*10+(c[i][j]-'0');
}
a[i]=sum;
}
std::sort(a,a+p+1,cmp);
printf("%d",a[0]);
for(i=1;i<=p;i++)
{
printf(" %d",a[i]);

}
printf("\n");


}
return 0;

}


  评论这张
 
阅读(7)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017