簡體   English   中英

返回最少遞歸調用的C ++最佳方法

[英]C++ best way to return minimum of many recursive calls

我正在嘗試通過遞歸調用解決動態編程問題。 dp[i][j]應等於dp[i-1][j], dp[i-1][j-1], dp[i-1][j+1]最小值。 但是我只能將C ++最小函數用於2個變量或一個向量。 我不想將結果推向向量,所以我想問什么是解決此問題的最佳方法。 這是代碼

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)})

你可以做min(dpF(A,dp,i-1,j-1),min(dpF(A,dp,i-1,j),dpF(A,dp,i-1,j + 1)) ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM