• (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;
    }
     
     
  • 相关阅读:
    友链QAQ
    快读
    树状数组
    构造(排列组合 插板法)
    字符串(string)(字符串相加)
    tarjan1
    魔术棋子(记忆化搜索)
    日期(csp2019)
    神奇的数字(magic)
    最佳调度问题(dfs)
  • 原文地址:https://www.cnblogs.com/Weixu-Liu/p/9174851.html
Copyright © 2020-2023  润新知