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