【发布时间】:2021-09-05 00:05:14
【问题描述】:
我有一个二维向量v(所有值都是正数,二维矩阵是方阵)和一个给定值k。例如,
v={
{2,1},
{3,4}
}
k = 3
我想查找并存储i, j 的所有这些组合,以便
arr[i] + arr[j] = k, or
arr[i] = k, or
arr[j] = k
例如v[0][0] + v[0][1] = 3 和v[1][0] = 3。我想将这些对存储在这样的数组中std::vector<std::vector<std::pair<int, int>>>。
Sample input:
v={
{2,1},
{3,4}
}
k = 3
Sample output:
{{(0,0),(0,1)}, {(1,0)}}
我工作的各个部分;
#include<iostream>
#include<vector>
int main(){
using namespace std;
vector<vector<int>>v={{2,1},{3,4}};
vector<pair<int,int>>k;
int size=v.size();
for(size_t i=0;i<size;i++){
for(size_t j=0;j<size;j++){
if(v[i][j]==3){
k.push_back(make_pair(i,j));
}
}
}
}
编辑link 了解我认为并尝试以上述方式解决的实际问题。
【问题讨论】:
-
为什么结果是地图向量?这不是成对的向量吗?
-
什么是
cost?请出示真实代码(minimal reproducible example)并在问题中包含错误信息 -
是的,先生,配对会更好。
-
@463035818_is_not_a_number 哦,抱歉,cost 是另一个向量的名称,我将名称更改为 v,现在编辑相同
-
在你写的文本中“......将所有地图(i,j)存储到
vector<vector<map(int,int)>>”但这不是代码的作用。请包含minimal reproducible example,包括输入、输出和预期输出,或编译器错误消息(如果有)。在您发布的代码中,二维向量是空的,所以这显然不是您用于测试的代码(还有一个;缺失)
标签: c++ algorithm dictionary vector stl