判断集合关系。 给你两个整数集合,你需要判断这两个集合的关系:相等,包含,没有交集还是其他。

B - 判断集合关系 样例输出 样例输入 输入第二行包含一些整数,第一个整数表示集合的大小,接下来个整数代表集合中的数。 BisapropersubsetofA 212 若和没有交集,输出AandBaredisjoint; 样例 若两集合相等,输出AequalsB; 输入第一行包含一些整数,第一个整数表示集合的大小,接下来个整数代表集合中的数。 数据范围及限制 题目描述 不满足以上所有情况,输出Iamconfused!。 若真包含于,输出BisapropersubsetofA; Kanade 给你两个整数集合,你需要判断这两个集合的关系:相等,包含,没有交集还是其他。 若真包含于,输出AisapropersubsetofB; 3123 输入 输出 你需要对两个集合的关系作出判断: ,集合中整数范围在内。保证集合中不会出现重复的元素。

#include<stdio.h>

#define SIZE 100001
void qsort(int q[], int l, int r);
int main() {
    int n, m;
    int i, j;
    int arr1[SIZE], arr2[SIZE];
    // 获取输入
    scanf("%d", &n);
    for (i = 0; i < n; i ++)
        scanf("%d", &arr1[i]);
    scanf("%d", &m);
    for (i = 0; i < m; i ++)
        scanf("%d", &arr2[i]);

    // 将两个集合进行升序排列
    qsort(arr1, 0, n - 1);
    qsort(arr2, 0, m - 1);

    i = 0, j = 0;
    int cnt = 0; // 记录两个集合相同的数字的数量
    while (i < n && j < m)
    {
        if (arr1[i] == arr2[j])
        {
            i++;
            j++;
            cnt++;
        }
        else if (arr1[i] > arr2[j])
            j++;
        else
            i++;
    }

    /*
     * 最后一步,也是最关键的一步
     * 判断两个集合间的关系
     */
    if (cnt == 0)
    {
        printf("A and B are disjoint");
    } else {
        if (n == m && cnt == n)
            printf("A equals B");
        else if (n > m && cnt == m)
            printf("B is a proper subset of A");
        else if (n < m && cnt == n)
            printf("A is a proper subset of B");
        else
            printf("I am confused!");
    }
}
void qsort(int q[], int l, int r)
{
    if (l >= r) return;

    int i = l - 1, j = r + 1, x = q[l + r >> 1];
    while (i < j)
    {
        do i ++ ; while (q[i] < x);
        do j -- ; while (q[j] > x);
        if (i < j)
        {
            int c = q[i];
            q[i] = q[j];
            q[j] = c;
        }
    }

    qsort(q, l, j);
    qsort(q, j + 1, r);
}

不好意思等的稍微久了一点。大概思路就是排序,然后再找两个集合的相同的数字的数量,然后再判断两个集合的关系。

能好好的,重新发一下题目吗

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632