码迷,mamicode.com
首页 > 其他好文 > 详细

strtok函数的简单应用 hdu 1106

时间:2015-03-18 10:42:15      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:strtok函数   multiset   

排序

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


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

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

 

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

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

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

Sample Input
0051231232050775
 

Sample Output
0 77 12312320
 

Source

听说用sscanf也可以,可惜对那个函数不是太熟。
//考查知识点:strtok函数的简单应用。
/*
strtok(char *s,char *a)函数每次只能在字符串 s 中 找到 字符串 a ,
并将 在s中存在的位置,设置为 NULL (即'\0'),没办法一次在s 中将所有
的 与 a 相等的字符串截取。char *s,char *a ;都必须是 字符串的起始地址
要将一个字符串s 中的所有的 都截取了,可以用循环。
char *b=strtok(s,a);
while(b!=NULL)
{
	//t.insert(atoi(b));
	b=strtok(NULL,c);
} 
*/
#include<stdio.h>
#include<set>
#include<string.h>
using namespace std;
char a[1010];
char c[2]={'5'};
int atoi(char *s)
{
	int len=strlen(s);
	int sum=0;
	for(int i=0;i<len;++i)
	sum=sum*10+s[i]-'0';
	return sum; 
}
int main()
{
	while(~scanf("%s",a))
	{
		char *b=strtok(a,c);
		multiset<int>t;
		while(b!=NULL)
		{
			t.insert(atoi(b));
			b=strtok(NULL,c);
		}
		multiset<int >::iterator it;
		it=t.begin();
		printf("%d",*it);
		it++;
		while(it!=t.end())
		{
			printf(" %d",*it);
			it++;
		}
		puts("");
	}
	return 0;
} 


strtok函数的简单应用 hdu 1106

标签:strtok函数   multiset   

原文地址:http://blog.csdn.net/ice_alone/article/details/44398477

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!