【题目描述】
给定两个集合A和B,判断他们是否相等。(集合元素可能需要去重) 。
如果两个集合相等,则输出"yes",否则输出"no"
【输入格式】
两行分别表示集合 A 和 B ,每一行先输入一个数 n 表示集合的大小,接下来输入 n 个数表示集合的元素
【输出格式】
按要求输出 “yes” 或 “no” (不带引号)
【输入样例】
4 1 2 3 4
4 4 3 2 1
【输出样例】
yes
【样例解释】
第一个集合里不重复的元素为{1,2,3,4},第二个集合也为{1,2,3,4},故两个集合相等
#include <iostream>
using namespace std;
bool map(int* x, int num_x, int* y, int num_y)
{
for (int i = 0; i < num_x; i++)
{
bool flag = 0;
for (int j = 0; j < num_y; j++)
{
if (x[i] == y[j])
{
flag = 1;
break;
}
}
if (!flag)
{
return 0;
}
}
return 1;
}
int main()
{
int* a, * b;
int num_a;
cin >> num_a;
a = new int[num_a];
for (int i = 0; i < num_a; i++)
{
cin >> a[i];
}
int num_b;
cin >> num_b;
b = new int[num_b];
for (int i = 0; i < num_b; i++)
{
cin >> b[i];
}
if (map(a, num_a, b, num_b) && map(b, num_b, a, num_a))
cout << "yes";
else
cout << "no";
return 0;
}