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

C++矩阵上三角化问题:对角线下方置0后输出未达预期

矩阵转上三角矩阵的C++代码问题修复

你的代码核心问题是return语句位置错误:return result;被放在了外层for循环的代码块内,导致程序处理完第一行(i=0)后就直接返回结果,后续行完全没被处理,所以输出仍是原矩阵。另外还有个潜在问题:你用n.size()同时作为行数和列数,这仅适用于方阵,若处理非方阵会出错,应该用矩阵第一行的列数(假设矩阵每行长度一致)。

修正后的代码

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

vector<vector<int>> upper_triangle(vector<vector<int>> n) {
    int rows = n.size();
    // 处理空矩阵,避免后续操作越界
    if (rows == 0) return {};
    int cols = n[0].size();
    vector<vector<int>> result = n;
    
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            // 将对角线下方的元素置0
            if (i > j) {
                result[i][j] = 0;
            }
        }
    }
    // 所有行处理完成后再返回结果
    return result;
}

// 测试用例
int main() {
    vector<vector<int>> test1 = {{10,11,12},{13,14,15},{16,17,18}};
    vector<vector<int>> res1 = upper_triangle(test1);
    for (auto &row : res1) {
        cout << "{";
        for (size_t k = 0; k < row.size(); k++) {
            cout << row[k];
            if (k != row.size()-1) cout << ",";
        }
        cout << "}" << endl;
    }
    cout << endl;

    vector<vector<int>> test2 = {{1,2,3},{4,5,6},{7,8,9}};
    vector<vector<int>> res2 = upper_triangle(test2);
    for (auto &row : res2) {
        cout << "{";
        for (size_t k = 0; k < row.size(); k++) {
            cout << row[k];
            if (k != row.size()-1) cout << ",";
        }
        cout << "}" << endl;
    }
    cout << endl;

    vector<vector<int>> test3 = {{1,2},{3,4}};
    vector<vector<int>> res3 = upper_triangle(test3);
    for (auto &row : res3) {
        cout << "{";
        for (size_t k = 0; k < row.size(); k++) {
            cout << row[k];
            if (k != row.size()-1) cout << ",";
        }
        cout << "}" << endl;
    }
    return 0;
}

关键修改点

  • 将return result;移到外层for循环外部,确保所有行都被处理后再返回结果。
  • 修正列数获取逻辑:用n[0].size()获取矩阵列数,同时增加空矩阵判断,避免数组越界。
  • 添加main测试函数,验证输出是否符合预期格式。

测试输出

{10,11,12}
{0,14,15}
{0,0,18}

{1,2,3}
{0,5,6}
{0,0,9}

{1,2}
{0,4}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 04:55:23