HDU 2034 人见人爱A-B

人见人爱A-B

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 77157    Accepted Submission(s): 21509

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

Author

lcy

Source

ACM程序设计期末考试(2006/06/07)

 1 //思路:这道题实际上要我们求集合A中除去集合A和集合B的交集的剩余部分
 2 #include <bits/stdc++.h>
 3 using namespace std;
 4 int main()
 5 {
 6     int a,b,i,j,t,d;
 7     int m[105];
 8     int n[105];
 9     int k[105];//给定一个集合C,用来储存A-B
10     while(cin>>a>>b&&(a||b))
11     {
12         t=0;
13         for(i=0;i<a;i++)
14            cin>>m[i];//集合A
15         for(j=0;j<b;j++)
16             cin>>n[j];//集合B
17             for(i=0;i<a;i++)
18             {
19                 for(j=0;j<b;j++)
20                 {
21                     if(m[i]==n[j])
22                     {
23                         m[i]=0;//用来标记两个集合中相同元素
24                         continue;
25                     }
26                 }
27             }
28             for(i=0;i<a;i++)
29             {
30                 if(m[i]!=0)
31                 {
32                     t++;//计算集合C中的元素个数
33                     break;
34                 }
35             }
36             if(t==0)cout<<"NULL";//集合A真包含于集合B(即集合A中的每一个元素都能在集合B中找到)
37             else
38             {
39                 j=0;
40                 for(i=0;i<a;i++)
41                 {
42                     if(m[i]!=0)
43                     {
44                         k[j]=m[i];//用集合C去储存A-B中的元素
45                         j++;
46                     }
47                 }
48                 t=j;//集合C中的元素个数
49                 for(i=0;i<t-1;i++)
50                 {
51                     for(j=0;j<t-1-i;j++)
52                     {
53                         if(k[j]>k[j+1])
54                         {
55                             d=k[j];
56                             k[j]=k[j+1];//元素排序
57                             k[j+1]=d;
58                         }
59                     }
60                 }
61                 for(j=0;j<t;j++)
62                 {
63                     cout<<k[j]<<" ";
64                 }
65             }
66             cout<<endl;
67     }
68     return 0;
69 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ml

HDUOJ-------1753大明A+B(大数之小数加法)

大明A+B Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav...

363120
来自专栏算法修养

PAT 甲级 1104 sum of Number Segments

1104. Sum of Number Segments (20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16...

29150
来自专栏算法修养

ZOJ 3605 Find the Marble(dp)

Find the Marble ---- Time Limit: 2 Seconds      Memory Limit: 65536 KB ---- Alic...

37570
来自专栏算法修养

HDU 4605 Magic Ball Game(可持续化线段树,树状数组,离散化)

Magic Ball Game Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/...

36360
来自专栏ACM算法日常

String Problem(KMP+最小表示法)- HDU 3374

Give you a string with length N, you can generate N strings by left shifts. For ...

9320
来自专栏小樱的经验随笔

HDU 2092 整数解

整数解 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/...

28160
来自专栏java初学

spring框架(3)— spring集合类的注入

12830
来自专栏java初学

spring框架(3)— spring集合类的注入

375130
来自专栏ml

HDUOJ---1867 A + B for you again

A + B for you again Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 3276...

36460
来自专栏小樱的经验随笔

【Java学习笔记之八】JavaBean中布尔类型使用注意事项

JavaBean是一个标准,遵循标准的Bean是一个带有属性和getters/setters方法的Java类。 JavaBean的定义很简单,但是还有有一些地方...

32980

扫码关注云+社区

领取腾讯云代金券