前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OJ刷题记录:集合的运算 题目编号:456

OJ刷题记录:集合的运算 题目编号:456

作者头像
英雄爱吃土豆片
发布2020-10-29 11:06:47
6140
发布2020-10-29 11:06:47
举报
文章被收录于专栏:英雄爱吃土豆片

集合的运算 题目编号:456

题目要求: 已知A和B均是由整型数据组成的集合,使用线性表表示集合,设计算法求集合A、B的交集和并集,功能包括输入集合A,输入集合B,求A和B的并集,求A和B的交集。本题中, 线性表的第一个元素位置为1,线性表的最大长度为20。

输入描述 各个命令以及相关数据的输入格式如下: 输入集合A:A,接下来的一行是要输入的集合元素个数n,下面是n行数据,每行数据有一个值,代表集合元素值 输入集合B:B,接下来的一行是要输入的集合元素个数n,下面是n行数据,每行数据有一个值,代表集合元素值 求集合A和B的并集:U 求集合A和B的交集:I 当输入的命令为E时,程序结束 输出描述 当输入的命令为U时,输出A和B两个集合的并集 当输入的命令为I时,输出A和B两个集合的交集 注意,所有的元素均占一行 输入样例 A 5 1 2 3 4 5 B 2 4 6 U I E 输出样例 1 2 3 4 5 6 4

解题思路: 水。

通关代码:

代码语言:javascript
复制
#include <iostream>

#define MaxSize 20

using namespace std;

bool isFindOf(int* arr, int len, int val) {
	bool isFind = false;
	
	for (int i = 0; i < len; i++) {
		if (arr[i] == val) {
			isFind = true;
			break;
		} 
	}
	
	return isFind;
}

int main() {
	int A[MaxSize], B[MaxSize];
	int lenA, lenB;
	char command;
	
	while (cin >> command) {
		if (command == 'E') break;
		
		switch (command) {
			case 'A':
				cin >> lenA;
				for (int i = 0; i < lenA; i++) {
					cin >> A[i];
				}
				break;
				
			case 'B':
				cin >> lenB;
				for (int i = 0; i < lenB; i++) {
					cin >> B[i];
				}
				break;
				
			case 'U':
				for (int i = 0; i < lenA; i++) {
					cout << A[i] << endl; 
				}
				for (int i = 0; i < lenB; i++) {
					if (!isFindOf(A, lenA, B[i]))
						cout << B[i] << endl;
				}
				break;
				
			case 'I':
				for (int i = 0; i < lenA; i++) {
					if (isFindOf(B, lenB, A[i]))
						cout << A[i] << endl;
				}
				break;
		}
	}
	
	return 0;
} 

毕。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/09/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 集合的运算 题目编号:456
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档