[英]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.