You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改程序以输出所有通过加法运算得到目标值的数组元素组合?

解决两数之和的所有组合问题

我来帮你搞定这个问题,先拆解下原代码的核心问题,再给出能捕获所有符合条件组合的正确实现:

原代码的问题分析

  • 数组越界访问:C++数组索引从0开始,你的数组a大小是5,合法索引范围是0到4,但代码中a[n - i]当i=0时会访问a[5],这属于未定义行为,可能导致程序崩溃或输出错误结果。
  • 逻辑不完整:变量m只在程序末尾自增了一次,并没有循环遍历所有可能的第一个元素,仅检查了m=0的情况,自然无法找到所有组合。
  • 未处理多组合场景:原代码没有遍历所有两两元素的组合,也没有逻辑来捕获多个满足条件的配对。

修复后的实现(暴力法,适合小数据量)

这种方法通过双重循环遍历所有不重复的元素对,确保找到所有满足条件的组合:

#include<iostream>
using namespace std;

int main() {
    int n = 5;
    int a[n];
    int target;

    // 输入数组元素
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    // 输入目标值
    cin >> target;

    cout << "所有满足条件的元素索引组合:" << endl;
    // 遍历每个元素作为第一个数
    for (int i = 0; i < n; i++) {
        // 遍历i之后的元素作为第二个数,避免重复输出(比如(i,j)和(j,i)只输出一次)
        for (int j = i + 1; j < n; j++) {
            if (a[i] + a[j] == target) {
                cout << "array[" << i << "] & array[" << j << "]" << endl;
            }
        }
    }

    return 0;
}

测试示例

比如输入数组1 3 3 4 2,目标值6,程序会输出:

所有满足条件的元素索引组合:
array[1] & array[2]
array[3] & array[4]

这正好对应3+3=6和4+2=6的两个组合。

更高效的实现(哈希表法,适合大数据量)

如果数组规模很大,暴力法的O(n²)时间复杂度会比较慢,我们可以用哈希表把时间复杂度降到O(n):

#include<iostream>
#include<unordered_map>
using namespace std;

int main() {
    int n = 5;
    int a[n];
    int target;
    unordered_map<int, int> valueIndexMap; // 存储元素值到索引的映射

    // 输入数组元素
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    // 输入目标值
    cin >> target;

    cout << "所有满足条件的元素索引组合:" << endl;
    for (int i = 0; i < n; i++) {
        int complement = target - a[i];
        // 检查补数是否已经在哈希表中
        if (valueIndexMap.find(complement) != valueIndexMap.end()) {
            cout << "array[" << valueIndexMap[complement] << "] & array[" << i << "]" << endl;
        }
        // 将当前元素和索引存入哈希表
        valueIndexMap[a[i]] = i;
    }

    return 0;
}

注意事项

哈希表法会自动避免重复输出同一对组合,因为我们是先检查补数再存入当前元素,每个配对只会被输出一次(比如先存了索引1的3,当遍历到索引2的3时,补数是3,能找到索引1,输出(1,2);不会反过来输出(2,1))。

内容的提问来源于stack exchange,提问作者Vijayakumar Mathaiyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 18:14:08