使用向量的C ++ 2D矩阵

时间:2015-12-24 13:42:43

标签: c++ vector dynamic-programming

#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/ 在这里,我们使用向量声明了一个2D矩阵,但在输入过程中我们传递了一个奇异的数据Ex:1 50 50 我很困惑,因为它应该有2个项目/数据,因为它是一个2D矩阵

1 个答案:

答案 0 :(得分:0)

你的例子:

-1 50 50

表示:将值:-1放入矩阵50,50的单元格中?

注意:这是整数的2D矩阵。如果你想要&#34; 2项/数据&#34;你可能需要一个整数对的二维矩阵,例如:

std::vector<std::vector<std::pair<int, int>>>