/*
人见人爱A-B
Problem Description
参加过上个月月赛的同学一定还记得其中的一个最简单的题目,
就是{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>
using namespace std;
int main()
{
    int a,b,m[101],n[101],k[101],i,j,t,d;
    while(cin>>a>>b&&(a||b))//输入A、B集合的长度
    {
        t=0;
        for(i=0;i<a;i++)//输入A集合
            cin>>m[i];
        for(j=0;j<b;j++)//输入B集合
            cin>>n[j];
        for(i=0;i<a;i++)//进行A-B的操作
        {
            for(j=0;j<b;j++)
                if(m[i]==n[j])
                {
                    m[i]=0;//重合的直接设为0
                    continue;
                }
        }
        for(i=0;i<a;i++)
        {
            if(m[i]!=0)
            {
                t++;//计数有多少个
                break;
            }
        }
        if(t==0)//没有
            cout<<"NULL";
        else
        {
            j=0;
            for(i=0;i<a;i++)
            {
                if(m[i]!=0)
                {
                    k[j]=m[i];
                    j++;
                }
            }
            t=j;
            for(i=0;i<t-1;i++)//此处用的是冒泡法,读者可以改为其它的排序方法
            {
                for(j=0;j<t-1-i;j++)
                {
                    if(k[j]>k[j+1])
                    {
                        d=k[j];
                        k[j]=k[j+1];
                        k[j+1]=d;
                    }
                }
            }
            for(j=0;j<t;j++)//最后就是输出了。
            {
                cout<<k[j]<<" ";
            }
        }
        cout<<endl;
    }
}

ACM2034的更多相关文章

随机推荐

  1. 【分块】bzoj3343: 教主的魔法

    3343: 教主的魔法 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 631  Solved: 272[Submit][Status][Discuss ...

  2. 【网络】IP地址分配、端口号、分层

    3.网络分层 OSI的七层网络结构图和TCP/IP的五层结构图 OSI七层模型OSI中的层            功能                                          ...

  3. Generating Huge reports in JasperReports

    There are certain things to care while implementing the Jasper Reports for huge dataset to handle th ...

  4. linux fork函数与vfork函数

    一.fork1. 调用方法#include <sys/types.h>#include <unistd.h> pid_t fork(void);正确返回:在父进程中返回子进程的 ...

  5. HDU 1885 Key Task(三维BFS)

    题目链接 题意 : 出口不止一个,一共有四种颜色不同的门由大写字母表示,而钥匙则是对应的小写字母,当你走到门前边的位置时,如果你已经走过相应的钥匙的位置这个门就可以走,只要获得一把钥匙就可以开所有同颜 ...

  6. OWASP-ZAP

    Zed Attack Proxy简写为ZAP,是一个简单易用的渗透测试工具,是发现Web应用中的漏洞的利器,更是渗透测试爱好者的好东西. ZAP下载地址:https://www.owasp.org/i ...

  7. python学习笔记二--列表

    一.列表: 1. 任意类型对象的位置相关的有序集合. 2. 没有固定大小. 3. 对偏移量进行赋值及各种方法的调用,修改列表. 4. 列表是序列的一种. 5. 所有对字符串的序列操作对列表均适用. 二 ...

  8. 【剑指offer】找出数组中出现一次的两个数

    2013-09-08 10:50:46 一个整型数组中,除了两个数字之外,其他数字都出现了2次,找出这两个只出现一次的数字,要求时间复杂度是O(N),空间复杂度是O(1). 小结: 任何数与0异或,结 ...

  9. html树形菜单控件

    html树形菜单控件  链接 http://www.ithao123.cn/content-713974.html         jQuery plugin: Treeview  这个插件能够把无序 ...

  10. 【Codeforces】#345 Div1

    1. Watchmen1.1 题目描述给$n$个点,求曼哈顿距离等于欧式距离的点对数. 1.2 基本思路由$|x_i-x_j|+|y_i-yj| = \sqrt{(x_i-x_j)^2+(y_i-yj ...