【问题标题】:C++ 2D Matrix using Vectors使用向量的 C++ 2D 矩阵
【发布时间】: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


【解决方案1】:

你的例子:

-1 50 50

意思是:将值:-1 放入矩阵 50,50 处的单元格中?

注意:这是一个 整数 的二维矩阵。如果您想要“2 个项目/数据”,您可能需要 整数对 的 2D 矩阵,例如:

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

【讨论】:

  • 对不起它的 1 50 50
  • 好吧,我明白了,我们正在创建一个 3 元素向量,但对我来说唯一的困惑是这个 topcoder 教程,它说:“ int N, N; // ... vector > Matrix(N, vector(M, -1)); 这里我们创建一个大小为 N*M 的矩阵并用 -1 填充它。” 那么我们创建一个矩阵 [m]x[n] ?
  • 一个矩阵 NxM。 shops 的第一个维度上升到 N,每个元素都是向量(M, -1),因此第二个维度上升到 M。考虑一个示例:std::vector&lt;int&gt; simpleVectorOfInts(10, -1)。它与数组int array[10] 非常相似。现在将int 替换为std::vector&lt;int&gt; 即可得到向量的向量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-01
  • 1970-01-01
  • 2016-02-22
相关资源
最近更新 更多