Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何删除向量或矩阵的向量中的元素_C++ - Fatal编程技术网

C++ 如何删除向量或矩阵的向量中的元素

C++ 如何删除向量或矩阵的向量中的元素,c++,C++,嘿,我正在尝试删除向量向量中的一个元素/很可能是向量构成的矩阵,所以我搜索了stack overflow,但没有任何答案,我也无法在网上找到它,所以我想在这里提问。我是编程新手,我正在尝试解决google kick start 2020 a轮 所以我写了一个代码,它的作用类似于堆栈。我没有使用堆栈,但尝试使用向量实现它,但无法擦除第I个向量第n个位置的元素 代码 #包括 #包括 #包括 #定义ans(x,y)“Case#”Max; 载体和平板; 对于(inti=0;iDat; 向量推回(Dat)

嘿,我正在尝试删除向量向量中的一个元素/很可能是向量构成的矩阵,所以我搜索了stack overflow,但没有任何答案,我也无法在网上找到它,所以我想在这里提问。我是编程新手,我正在尝试解决google kick start 2020 a轮

所以我写了一个代码,它的作用类似于堆栈。我没有使用堆栈,但尝试使用向量实现它,但无法擦除第I个向量第n个位置的元素

代码

#包括
#包括
#包括
#定义ans(x,y)“Case#”Max;
载体和平板;
对于(inti=0;iDat;
向量推回(Dat);
}
S_板。推回(vec);
}
int Cnt=0,Beauty=0;
而(Cnt!=板){
int mx=0;
int SNo=0;

对于(int i=0;i而言,擦除可按以下方式执行:

S_Plates[SNo].erase(S_Plates[SNo].begin());
如评论所示,其他地方需要进行一些修改

请注意,擦除是一项代价高昂的功能,在这里毫无用处:您可以使用索引来代替

然而,这种贪婪算法并没有提供好的结果

Stacks (N) = 3; Plates (K) = 2; Max (P) = 2; 
S[0] = {1, 100}, S[1]={2, 2}, S[2] = {2, 2}
你的程序返回4而不是101

解决方案是实现DP算法

让我们定义一个初始化为0的数组
Cumul[N][p]

然后


复杂性是O(PNK)。

代码有什么问题?当您有
S_板时会发生什么情况。在代码中擦除(S_板.begin()+SNo[0]);
编译器错误?运行时错误?意外输出?
SNo
int
。您编写
SNo[0]时的意图是什么
?S_板是一个向量,每个索引中都有它的向量,SNo是我要访问的第I个索引,当我尝试访问第I个向量的第0个元素时,正如您所知,下标值不是数组、指针或vector@largest_prime_is_463035818我的意图是访问第i个向量的第0个元素,但idk如何操作这是可能是另一个输入错误:
mx=(mx,S_Plates[i][0]);
。你想得到这两个或类似的最大值吗?正如写的一样,它与
mx=S_Plates[i][0];
相同,这使得下一行的条件总是
为真
Stacks (N) = 3; Plates (K) = 2; Max (P) = 2; 
S[0] = {1, 100}, S[1]={2, 2}, S[2] = {2, 2}
i = 0 to N-2
Cumul[i+1][j] = max (Cumul[i][j], Cumul[i][j-k], A[i][0] + .. A[i][k-1]), for j =0 to P and k = 0 to K