#13178. 珅泽教育CSP-J第一轮模拟考第三十套 第 35 题

珅泽教育CSP-J第一轮模拟考第三十套 第 35 题

三、完善程序题(单项选择题,共30分)

完善程序(1):两组组合和

从两组长度为 n 的数据中各取 m 个数,求最小的公共组合和。

#include <bits/stdc++.h>
using namespace std;
int n, m, t;
int a[20], b[20], s1[1 << 15], s2[1 << 15];
void dfs(int cnt, int pos, int sum1, int sum2) {
    if (___(1)___) {
        s1[++t] = sum1;
        s2[t] = sum2;
        return;
    }
    if (___(2)___) return;
    dfs(___(3)___);
    dfs(cnt, pos + 1, sum1, sum2);
}
int main() {
    cin >> n >> m;
    for (int i = 1; i <= n; i++) cin >> a[i];
    for (int i = 1; i <= n; i++) cin >> b[i];
    dfs(___(4)___);
    sort(s1 + 1, s1 + t + 1);
    sort(s2 + 1, s2 + t + 1);
    int i = 1, j = 1;
    while (___(5)___) {
        if (s1[i] == s2[j]) {
            cout << s1[i];
            return 0;
        }
        if (s1[i] < s2[j]) i++;
        else j++;
    }
    cout << "IMPOSSIBLE";
    return 0;
}

②处应填( )。

{{ select(1) }}

  • m-pos+1<n-cnt
  • n-pos+1<m-cnt
  • n-pos+1<=m-cnt
  • m-pos+1<=n-cnt