从标准输入中读入两个整数集,整数集中数据无序,且可能有重复数据。当两个数据集中数据完全相同(数据相同,数据若重复,重复个数也相同,顺序不一定相同),则两个数据集相同。编写一程序判断输入的两数据集是否相同:用1表示相同,用0表示不同,并且输出每个元素在两个整数集中出现的系数
时间: 2023-04-03 22:03:31 浏览: 227
我可以回答这个问题。可以使用哈希表来判断两个整数集是否相同。首先读入两个整数集,然后分别将它们存入两个哈希表中,哈希表的键为整数,值为整数出现的次数。接着遍历其中一个哈希表,对于每个键值对,如果在另一个哈希表中也存在相同的键值对,则说明两个整数集相同,输出1,并输出该键值对的值;否则输出0。代码如下:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXN 100000
int hash1[MAXN], hash2[MAXN];
int main()
{
int n, m, x, i, flag = 1;
memset(hash1, 0, sizeof(hash1));
memset(hash2, 0, sizeof(hash2));
scanf("%d%d", &n, &m);
for (i = 0; i < n; i++) {
scanf("%d", &x);
hash1[x]++;
}
for (i = 0; i < m; i++) {
scanf("%d", &x);
hash2[x]++;
}
for (i = 0; i < MAXN; i++) {
if (hash1[i] != hash2[i]) {
flag = 0;
break;
}
}
printf("%d\n", flag);
if (flag) {
for (i = 0; i < MAXN; i++) {
if (hash1[i] > 0 && hash2[i] > 0) {
printf("%d %d\n", i, hash1[i]);
}
}
}
return 0;
}
```
阅读全文