0
我正在使用遞歸實現maxPathSum函數,並且我不知道在函數中使用兩個調用時會發生什麼.i知道那麼稱爲 二進制遞歸,並知道如何從此考慮它關於這個問題的答覆 Understanding double recursion遞歸中函數的很多調用
,但是當我寫的代碼它並沒有給我正確的答案 [注意]唯一需要的方向是對的,下
#include <iostream>
#include<algorithm>
using namespace std;
const int MAX=3;
int grid[MAX][MAX]={
{5,1,2},
{6,4,8},
{1,8,9}
};
bool valid(int r, int c);//check not get out grid
int maxPathSum(int r,int c);
int main()
{
int sum=0;
for(int i=0;i<MAX;i++)
sum += maxPathSum(i,i);
cout<<"the sum of the longest path is: "<<sum;
}
int maxPathSum(int r,int c){
if(!valid(r,c))
return 1;
//Reach the last element in the last right down
if(r == MAX-1 && c == MAX-1)
return grid[r][c];
int path1=maxPathSum(r,c+1);//Right
int path2=maxPathSum(r+1,c);//down
return grid[r][c]+max(path1,path2);
}
bool valid(int r, int c){
if(r > MAX-1)
return false;
if(c > MAX-1)
return false;
return true;
}
當我打電話功能主要沒有循環有時它給我r飛行回答
這樣低的矩陣長度
const int MAX=2;
int grid[MAX][MAX]={
{5,2},
{1,8}
};
maxPathSum(0,0);
'if(!valid(r,c))return 1;'這個情況不應該是'return 0'嗎? – Arcinde
歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve)適用於此處。特別是,包括您的問題情況的實際和預期產量。 – Prune