zoukankan      html  css  js  c++  java
  • 人见人爱A-B 题解

    参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法运算。(当然,大家都知道集合的定义,就是同一个集合中不会有两个相同的元素,这里还是提醒大家一下) 

    呵呵,很简单吧?

    Input每组输入数据占1行,每行数据的开始是2个整数n(0<=n<=100)和m(0<=m<=100),分别表示集合A和集合B的元素个数,然后紧跟着n+m个元素,前面n个元素属于集合A,其余的属于集合B. 每个元素为不超出int范围的整数,元素之间有一个空格隔开. 
    如果n=0并且m=0表示输入的结束,不做处理。

    Output针对每组数据输出一行数据,表示A-B的结果,如果结果为空集合,则输出“NULL”,否则从小到大输出结果,为了简化问题,每个元素后面跟一个空格. 
    Sample Input

    3 3 1 2 3 1 4 7
    3 7 2 5 8 2 3 4 5 6 7 8 
    0 0

    Sample Output

    2 3 
    NULL

    #include<iostream>
    #include<set>
    using namespace std;
    int main()
    {
        int n,m,i,j,s,t;
        set<int> record;
        while(cin>>n>>m)
        {
            if(n==0&&m==0) break;
            int element_n[101],element_m[101];
            for(i=0;i<n;i++) cin>>element_n[i];
            for(j=0;j<m;j++) cin>>element_m[j];
            s=0;
            for(i=0;i<n;i++)
            {
                t=1;
                for(j=0;j<m;j++)
                {
                    if(element_n[i]==element_m[j])
                        t=0;
                }
                if(t)   record.insert(element_n[i]);        
                else    s=s+1;    
                   }
            
            if(s==n) cout<<"NULL"; 
            else
            {
            set<int>::iterator ite=record.begin();
            for(ite;ite!=record.end();ite++){
                cout<<*ite<<" ";
            }    
            } 
            cout<<endl; 
             record.clear();
            }        
        }     
        

    刚开始出错主要是因为  record.clear() 未清空上次的元素 导致一直答案错误,需要熟悉clear()的用法

  • 相关阅读:
    Java 实现 蓝桥杯 生兔子问题
    Java实现 蓝桥杯 基因牛的繁殖
    Java实现 蓝桥杯 基因牛的繁殖
    Java实现 蓝桥杯 基因牛的繁殖
    Java实现 LeetCode 33 搜索旋转排序数组
    Java实现 LeetCode 33 搜索旋转排序数组
    Java实现 LeetCode 33 搜索旋转排序数组
    深入探究VC —— 资源编译器rc.exe(3)
    深入探究VC —— 编译器cl.exe(2)
    深入探究VC —— 编译器cl.exe(1)
  • 原文地址:https://www.cnblogs.com/hrlsm/p/12520075.html
Copyright © 2011-2022 走看看