【发布时间】:2021-09-23 07:48:33
【问题描述】:
#include <bits/stdc++.h>
using namespace std;
int cs(int n, int m, int ar[][101]){
int dp[n][m];
dp[0][0] = ar[0][0];
for(int i = 1; i<m; i++){
dp[0][i] = ar[0][i]+dp[0][i-1];
}
for(int i = 1; i<n; i++){
dp[i][0] = ar[i][0]+dp[i-1][0];
}
for(int i = 1; i<n; i++){
for(int j = 1; j<m; j++){
dp[i][j] = ar[i][j] + min(dp[i-1][j], dp[i][j-1]);
}
}
return dp[n-1][m-1];
}
int main(){
int n, m;
cin>>n>>m;
int arr[n][m];
for(int i = 0 ; i < n ;i++){
for(int j = 0; j<m; j++)
cin>>arr[i][j];
}
cout<<cs(n,m,arr)<<endl;
}
我遇到了这个错误,谁能帮忙
main.cpp:30:18: 错误:无法将 int ()[m] 转换为 int ()[101]
我无法添加确切的号码。行和列,所以我不能事先指定它, 有没有办法在不使用矢量的情况下摆脱这个问题, 问题链接为:https://www.pepcoding.com/resources/online-java-foundation/dynamic-programming-and-greedy/min-cost-maze-traversal-official/ojquestion
【问题讨论】:
-
可变长度数组不是 C++ 标准的一部分,不能以这种方式使用。不更改类型就无法解决它 -
std::vector<std::vector<int>>是最容易使用的,您也可以手动分配内存,但这要困难得多。 -
为什么“不使用矢量”?您可以使用手动管理的动态数组,但为什么要这样做?
-
无意冒犯,但初学者在学习非异国情调的替代方案之前先了解异国情调的编译器扩展真的很糟糕。谁让你使用
cin>>n>>m; int arr[n][m];对你没有帮助
标签: c++ multidimensional-array 2d dynamic-programming dsa