HDU1412{A} + {B}(模拟)

xiaoxiao2021-02-27  119

给你两个集合,要求{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 解题思路: 把A和B集合中的元素都先存在a数组中(此时包含重复元素),sort排序后依次将不同的元素存入b集合中。注意输出格式。

AC代码:

#include<stdio.h> #include<algorithm> using namespace std; int main() { int a[20020],b[20020]; int n,m,i,j; while(~scanf("%d%d",&n,&m)) { for(i=0;i<n+m;i++) { scanf("%d",&a[i]); } sort(a,a+n+m); b[0]=a[0]; j=0; for(i=1;i<n+m;i++) { if(b[j]!=a[i]) { j++; b[j]=a[i]; } } printf("%d",b[0]); for(i=1;i<=j;i++) printf(" %d",b[i]); printf("\n"); } return 0; }
转载请注明原文地址: https://www.6miu.com/read-16278.html

最新回复(0)