zoukankan      html  css  js  c++  java
  • HDOJ-1412(set)

    {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
     

    依旧是这道两集合相加的问题,我们之前探讨过用数组排序解决这个问题(见这里),这次我们换用set集合容器来解决。因为set容器会拒绝保存与已含元素相等的元素,用来解这种集合相加问题更加简便。

    AC代码:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<set>
     4 using namespace std;
     5 int main(){
     6     
     7     int n,m,a;
     8     while(~scanf("%d %d",&n,&m)){
     9         set<int> s;//定义集合对象s 
    10         while(n--){//插入第一个集合 
    11             scanf("%d",&a);
    12             s.insert(a);
    13         }
    14         while(m--){//插入第二个集合 
    15             scanf("%d",&a);
    16             s.insert(a);
    17         }
    18         set<int>::iterator it;//定义前向迭代器 
    19         it=s.begin();//注意输出格式的空格 
    20         printf("%d",*it);
    21         it++;
    22         for(it;it!=s.end();it++){//遍历 
    23             printf(" %d",*it);
    24         }
    25         printf("
    ");
    26     }
    27     return 0;
    28 } 
  • 相关阅读:
    合并二叉树
    剑指 Offer 68
    剑指 Offer 42. 连续子数组的最大和
    C语言 递归实现迷宫寻路问题
    C语言数据结构 统计英文文字每个“单词”出现次数
    C语言 双链表的频度排序管理
    C语言 插入排序使链表递增
    c语言 简单的天数计算器
    数据结构 链表的头插法逆置
    C语言 删除指定的单词
  • 原文地址:https://www.cnblogs.com/Kiven5197/p/5525275.html
Copyright © 2011-2022 走看看