【发布时间】:2015-12-24 13:42:43
【问题描述】:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--){
int N;
cin>>N;
vector<vector<int>> shops(N,vector<int>(3));//What does shops(N,vector<int>(3)) mean?
for(int i=0;i<N;i++){
for(int j=0;j<3;j++){
cin>>shops[i][j];//doubt
}
}
vector<vector<int>> DP(N,vector<int>(3));
for(int i=0;i<3;i++){
DP[0][i]=shops[0][i];
}
for(int i=1;i<N;i++){
DP[i][0] = min(DP[i-1][1] , DP[i-1][2]) + shops[i][0];
DP[i][1] = min(DP[i-1][0] , DP[i-1][2]) + shops[i][1];
DP[i][2] = min(DP[i-1][0] , DP[i-1][1]) + shops[i][2];
}
int ans = min(min(DP[N-1][0], DP[N-1][1]) , DP[N-1][2]);
cout<<ans<<"\n";
}
}
以上是这个问题的实现https://www.hackerearth.com/code-monk-dynamic-programming/algorithm/samu-and-shopping/ 在此,我们使用向量声明了一个二维矩阵,但在输入过程中我们传递了一个奇异数据 Ex: 1 50 50 我很困惑,因为它应该有 2 个项目/数据,因为它是一个 2D 矩阵
【问题讨论】:
-
带有注释的行创建了一个包含 N 个元素的向量
shops。事实证明,向量shops的每个元素都是整数向量。整数向量的示例值可以是:vector(3),一个初始化的 3 元素向量。综上所述:该行创建了一个包含 3 个元素的向量 shops,每个元素都是 3 个整数的向量。 -
可疑行是“从标准输入读取”调用,用于将值输入到
shops[i][j]。我强烈推荐 C++ 教程。另外 - 代码远非好(但我想这是一个竞赛风格,快速编写,不幸的代码)。
标签: c++ vector dynamic-programming