概述
集合的运算 题目编号: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
解题思路:
水。
通关代码:
#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;
}
毕。
最后
以上就是懦弱路人为你收集整理的OJ刷题记录:集合的运算 题目编号:456的全部内容,希望文章能够帮你解决OJ刷题记录:集合的运算 题目编号:456所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复