首先,這個題用貪心是確定作不出來滴!ios
那麼用什麼方法作呢?數組
我要是知道我就不看題解了!spa
思路是——code
從最上層開始向下搜索,搜到最底層後回溯就能夠了ci
代碼以下:get
#include<iostream> #include<cstring> using namespace std; int r,a[1005][1005]; int mem[1005][1005];//記憶化數組 int dfs(int x,int y) { if(x>=r-1)//邊界判斷 return a[x][y]; if(mem[x][y]>-1)return mem[x][y];//記憶化 return mem[x][y]=a[x][y]+max(dfs(x+1,y),dfs(x+1,y+1));//狀態轉移方程 } int main() { memset(mem,-1,sizeof(mem));//初始化記憶數組 cin>>r; for(int i=0;i<r;i++) for(int j=0;j<=i;j++)cin>>a[i][j];//輸入數組 cout<<dfs(0,0);//從最上層開始搜 return 0; }