(Set) {A} + {B} hdu1412

mac2022-06-30  82

{A} + {B} 链接:http://acm.hdu.edu.cn/showproblem.php?pid=1412   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("\n"); //一般迭代遍历。 Iterator<Integer> iterator = set.iterator(); while(iterator.hasNext()) { int i = iterator.next(); System.out.print(i + " "); } System.out.print("\n"); //这个很重要,虽然最后一个数的后面有个空格,但是会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

最新回复(0)