试题 算法训练 P0705

资源限制

内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s

  输入两个整数集合A、B,求出他们的交集、并集以及B在A中的余集。交集、并集和余集的计算都要求写成一个单独的函数。

  输入第一行为一个整数n,表示集合A中的元素个数。

  第二行有n个按从小到大的顺序输入且互不相同的整数,表示集合A中的元素

  第三行为一个整数m,表示集合B中的元素个数。

  第四行有m个按从小到大的顺序输入且互不相同的整数,表示集合B中的元素

  集合中的所有元素均为int范围内的整数,n、m<=1000。

  输出第一行按从小到大的顺序输出A、B交集中的所有元素。

  第二行按从小到大的顺序输出A、B并集中的所有元素。

  第三行按从小到大的顺序输出B在A中的余集中的所有元素。

输入:

  5

  1 2 3 4 5

  5

  2 4 6 8 10

  输出:

  2 4

  1 2 3 4 5 6 8 10

  1 3 5

#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;


int A[1005], B[1005], C[1005];


int main()
{
    int m, n;
    cin>>m;
    for(int i=0; i<m; i++)
        cin>>A[i];
    cin>>n;
    for(int i=0; i<n; i++)
        cin>>B[i];

    int ia=0, ib=0;
    while(!(ia==m && ib==n))
    {
        if(A[ia] == B[ib])
        {
            cout<<A[ia]<<" ";
            C[ia] = 1;

        }

        if(A[ia] >= B[ib] && ib < n)
            ib++;
        else if(A[ia] <= B[ib] && ia < m)
            ia++;
        else if(ia == m)
            ib++;
        else if(ib == n)
            ia++;
    }
    cout<<endl;

    ia=0, ib=0;
    while(!(ia==m && ib==n))
    {
        if(A[ia] > B[ib] && ib < n)
        {
            cout<<B[ib]<<" ";
            ib++;
        }
        else if(A[ia] < B[ib] && ia < m)
        {
            cout<<A[ia]<<" ";
            ia++;
        }
        else if(A[ia] == B[ib])
        {
            cout<<A[ia]<<" ";
            if(ia < m) ia++;
            if(ib < n) ib++;
        }
        else if(ia == m)
        {
            cout<<B[ib]<<" ";
            ib++;
        }
        else if(ib == n)
        {
            cout<<A[ia]<<" ";
            ia++;
        }

    }
    cout<<endl;

    for(int i=0; i<m; i++)
    {
        if(!C[i])
            cout<<A[i]<<" ";
    }

    return 0;
}
这道题目是一个编程问题,需要实现一个数组求和的函数。具体的函数是void Add(int n, int* a1, int* a2, int* result),其n是数组长度,a1是第一个数组,a2是第二个数组,result是a1和a2的和。根据题目给出的示例,我们可以得出结果result={3, 4, 9, 14}。在main函数,通过输入n, a1, a2来测试该函数,并输出结果result。具体的代码实现如引用所示。 这道题目的算法是比较简单的,主要是通过循环遍历数组,并将对应位置的元素相加得到结果。具体的实现可以参考引用的代码。 希望能够帮助到你。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [试题 算法训练 P0801](https://blog.csdn.net/m0_65406049/article/details/129248253)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [试题 算法训练 P0804](https://blog.csdn.net/weixin_46212625/article/details/123572098)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [试题 算法训练 P0801(python)](https://blog.csdn.net/2201_75880335/article/details/128739540)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值