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

HDOj-1412

时间:2016-05-05 22:34:25      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:

{A} + {B}

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 17014    Accepted Submission(s): 7110


Problem Description
给你两个集合,要求{A} + {B}.
注:同一个集合中不会有两个相同的元素.

 

Input
每组输入数据分为三行,第一行有两个数字n,m(0<n,m<=10000),分别表示集合A和集合B的元素个数.后两行分别表示集合A和集合B.每个元素为不超出int范围的整数,每个元素之间有一个空格隔开.

 

Output
针对每组数据输出一行数据,表示合并后的集合,要求从小到大输出,每个元素之间有一个空格隔开.

 

Sample Input
1 2
1
2 3
1 2
1
1 2
 
Sample Output
1 2 3
1 2
 
两集合相加排序后输出的问题,比较水的一道题,注意集合内没有相同的元素这一点。
附自AC代码:
 1 #include<iostream>
 2 #include<algorithm>//包含了排序函数sort 
 3 #include<cstdio>
 4 using namespace std;
 5 int main(){
 6     int n,m;
 7     while(~scanf("%d %d",&n,&m)&&n&&m){
 8         int i,a[20010];
 9         for(i=0;i<n+m;i++){//直接将两个集合全部输入a数组中 
10             scanf("%d",&a[i]);
11         }
12         sort(a,a+m+n);//对a数组进行排序 
13         printf("%d",a[0]);//首先输出a[0],避免与之后的判断语句冲突 
14         for(i=1;i<n+m;i++){
15             if(a[i-1]==a[i])//当数组内存在相等元素时,跳过其他相等元素只输出最后一个 
16             continue;
17             else
18             printf(" %d",a[i]);
19         }
20         printf("\n");//不要忘记最后的\n; 
21     }
22     return 0;
23 } 

P.S:

写这题的时候突然想系统的巩固一下几大排序算法(总不能老用sort()。。),这几天重点学习一下,争取近几日开一个排序专栏!

HDOj-1412

标签:

原文地址:http://www.cnblogs.com/Kiven5197/p/5463436.html

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