• HDU 1412 {A} + {B}


    刷水题。

    http://acm.hdu.edu.cn/showproblem.php?pid=1412

    给你两个集合,要求{A} + {B}.
    注:同一个集合中不会有两个相同的元素.
    Input
    每组输入数据分为三行,第一行有两个数字n,m(0<n,m<=10000),分别表示集合A和集合B的元素个数.后两行分别表示集合A和集合B.每个元素为不超出int范围的整数,每个元素之间有一个空格隔开.
    Output
    针对每组数据输出一行数据,表示合并后的集合,要求从小到大输出,每个元素之间有一个空格隔开.
     
     
    求两个集合的和。

    我用的是vector,后来感觉应该用set的。

    就当熟悉stl的了。

    #include <stdio.h>
    #include <algorithm>
    #include <set>
    using namespace std;
    int main()
    {
    int first ,last;
    int n;
    while(scanf("%d %d",&first,&last)!=EOF)
    {
    set<int> nset;
    for(int i = 0 ; i < first+last ; ++i)
    {
    scanf("%d",&n);
    nset.insert(n);
    }
    set<int>::iterator iter = nset.begin();
    set<int>::iterator tmp = iter;

    for(; ++tmp != nset.end(); ++iter)
    {
    printf("%d ",*iter);
    }
    printf("%d\n",*iter);
    }
    return 0;
    }
    vector版
     1 #include <stdio.h>
    2 #include <algorithm>
    3 #include <vector>
    4 using namespace std;
    5 int main()
    6 {
    7 int first ,last;
    8 int n;
    9 while(scanf("%d %d",&first,&last)!=EOF)
    10 {
    11 vector <int> firstvect(0,first);
    12 vector <int> lastvect(0,last);
    13 for(int i = 0; i < first; ++i)
    14 {
    15 scanf("%d",&n);
    16 firstvect.push_back(n);
    17 }
    18 for(int i = 0; i < last; ++i)
    19 {
    20 scanf("%d",&n);
    21 lastvect.push_back(n);
    22 }
    23 std::sort(firstvect.begin(),firstvect.end());
    24 std::sort(lastvect.begin(),lastvect.end());
    25
    26 vector<int>::iterator firstiter = firstvect.begin();
    27 vector<int>::iterator seconditer = lastvect.begin();
    28 while((firstiter != firstvect.end())&&(seconditer !=lastvect.end()))
    29 {
    30 if(*firstiter < *seconditer)
    31 printf("%d ",*firstiter++);
    32 else {
    33 if(*firstiter == *seconditer)
    34 ++firstiter;
    35 printf("%d ",*seconditer++);
    36 }
    37 }
    38 while(firstiter != firstvect.end())
    39 {
    40 printf("%d ",*firstiter++);
    41 }
    42 while(seconditer !=lastvect.end())
    43 {
    44 printf("%d ",*seconditer++);
    45 }
    46 printf("\n");
    47 }
    48 }

    vector提示表示错误。应该是没到最后一个输出的时候,多了一个空格。

    要解决的比较麻烦,于是放弃。思想是最重要的。



  • 相关阅读:
    SSLOJ 1338.逃亡路径
    文件上传与下载
    TCP协议和UDP协议
    DWR推技术在开发中需要注意的ScriptSession问题
    页面缓存-freemarker静态处理
    springMVC的工作流程
    hibernate的工作流程
    Struts2框架的大致流程
    mybatis中的多表查询
    传值乱码解决方案
  • 原文地址:https://www.cnblogs.com/westfly/p/2402316.html
Copyright © 2020-2023  润新知