C++ 返回许多递归调用中最小值的最佳方法

标签 c++ recursion dynamic-programming minimum

我正在尝试使用递归调用来解决动态规划问题。 dp[i][j] 应等于dp[i-1][j]、dp[i-1][j-1]、dp[i-1] 的最小值][j+1]。但我只能对 2 个变量或 vector 使用 c++ 最小函数。我不想将我的结果推到 vector 中,所以我想问一下解决这个问题的最佳方法是什么。这是代码

int dpF(vector<vector<int>>& A, vector<vector<int>>dp,int i,int j)
    {
        if(i<0||i>=A.size()||j<0||j>A.size())
            return 0;
        if(dp[i][j]!=-1)
        {
            return dp[i][j];
        }

        dp[i][j]=A[i][j]+Math.min(dpF(A,dp,i-1,j-1),dpF(A,dp,i-1,j),dpF(A,dp,i-1,j+1)); //Here is the problem, I am trying to find an elegant way to return the minimum of these 3 values.
        return dp[i][j];
    }

最佳答案

std::min提供接受 std::initializer_list 的重载。你可以这样做:

std::min({dpF(A,dp,i-1,j-1), dpF(A,dp,i-1,j), dpF(A,dp,i-1,j+1)})

关于C++ 返回许多递归调用中最小值的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57329542/

相关文章:

python - 为什么策略迭代和值迭代方法对于最优值和最优策略给出不同的结果?

c++ - 为什么 C++ 有自定义结构 vector 的 ostream 重载问题?

c++ - 按位运算的性能下降

c++ - 可以通过 C++ 访问堆栈分配的 Rust 缓冲区吗?

php - 递归树遍历 - 如何跟踪递归级别?

java - 递归地将新节点添加到 LinkedList 的末尾?

for-loop - 在 for 循环中重复调用内核的 CUDA 程序的性能受到影响

python - 生成代码以与不需要重新编译的正在运行的 cpp 应用程序交互的好方法是什么?

c++ - 如何在递归函数中更改数字的数字? C++

algorithm - 覆盖目标的传感器的最小成本子集