(Set) {A} + {B} hdu1412

{A} + {B}
 
Problem Description
给你两个集合,要求{A} + {B}.
注:同一个集合中不会有两个相同的元素.
 
Input
每组输入数据分为三行,第一行有两个数字n,m(0<=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
 
Author
xhd
 
可以用JAVA的Set类来写,就是hdu对此的判定并不严格。
JAVA代码:
import java.math.BigDecimal;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

import javax.swing.plaf.basic.BasicArrowButton;

public class Main {

    public static void main(String[] args) {
        Scanner inScanner = new Scanner(System.in);
        while(inScanner.hasNext()) {
            int m = inScanner.nextInt();
            int n = inScanner.nextInt();
            Set<Integer> set = new TreeSet<>();
            for(int i = 0; i < m;i++) {
                int x = inScanner.nextInt();
                set.add(x);
            }
            for(int i = 0 ;i < n;i++) {
                int x = inScanner.nextInt();
                if(!set.contains(x)) {
                    set.add(x);
                }
            }
            //for循环遍历。
//            for(Integer integer:set) {
//                System.out.print(integer + " ");
//            }
//            System.out.print("
");
            
            //一般迭代遍历。
            Iterator<Integer> iterator = set.iterator();
            while(iterator.hasNext()) {
                int i = iterator.next();
                System.out.print(i + " ");
            }
            System.out.print("
"); //这个很重要,虽然最后一个数的后面有个空格,但是会AC,并且如果用println(),会WA。
        }
    }

}

C++代码:

#include <iostream>
#include <set>
using namespace std;
int main()
{
    set<int> a; //可以只用一个集合表示A和B的并集。
     int m,n;
     while(cin>>m>>n){
        a.clear(); //必须要用,相当于初始化。
         while(m--){
             int i;
        cin>>i;
        a.insert(i);
        }
        while(n--){
            int i;
            cin>>i;
            a.insert(i);
        }
    int i=0; //注意领会。
    set<int>::iterator it=a.begin();
    for(;it!=a.end();it++,i++){
         if(i==0)
         cout<<*it;
         else
         cout<<" "<<*it;
    }
         cout<<endl;
    }
    return 0;
}
 
 
原文地址:https://www.cnblogs.com/Weixu-Liu/p/9174851.html