gpt4 book ai didi

c++ - 通过从每一行中选择1个元素来查找2d数组中的最低和

转载 作者:行者123 更新时间:2023-12-02 10:17:31 24 4
gpt4 key购买 nike

我正在编写给出二维矩阵数组的代码,并从每行中选择1个元素,必须输出最小的和。和中的和必须等于n个最小和

#include<iostream>
#include<math.h>
using namespace std;
int main() {
int n;
cin>>n;
int hist[n][n];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>hist[i][j];
}
}
int num=pow(n,n);
int sum[num];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
sum[i]=sum[i]+hist[i][j];
}
}
for(int i=0;i<n;i++){
cout<<sum[i]<<" ";
}

return 0;
}

输入示例为:
3
1 8 5
9 2 5
10 7 6

输出将是
9 10 12

因为1 + 2 + 6 = 9; 1 + 2 + 7 = 10; 1 + 2 + 10
我面临的主要问题是我找不到最低的金额,甚至找不到我试图强行使用的金额,这使它无法正常工作。
您能否帮助我修复代码,以便至少可以找到总和?

最佳答案

您的代码有很多问题(甚至不是合法的C++)。但是,导致当前问题的问题是必须将sum初始化为零。目前,您总共有垃圾值。

int sum[num] = {0};

其他一些问题
int num=pow(n,n);

这将 n计算为 n的幂,但是只有 n平方和。所以这样会更好
int sum[n*n] = {0};

但是最大的问题(使您的代码成为非法C++的问题)在于,在C++数组中,维必须是编译时间常数,而不是变量。所以这
int hist[n][n];

还有这个
int sum[num];

不是合法的C++。它们在C语言中是合法的,这就是为什么您的编译器接受它们的原因,但并不是每个C++编译器都接受。由于您尝试编写C++代码,因此应使用 vector。这是使用 vector 重写的代码。
#include <vector>
using std::vector;

...

vector<vector<int>> hist(n, vector<int>(n));

...

vector<int> sum(num, 0);

...

没什么其他需要改变的。

关于c++ - 通过从每一行中选择1个元素来查找2d数组中的最低和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61453950/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com