标签:
1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstring> 5 using namespace std; 6 7 int s[100][100]; 8 int dp[100][100]; 9 int max(int a,int b) 10 { 11 if(a>b) 12 return a; 13 else 14 return b; 15 } 16 int main() 17 { 18 int n,i,j; 19 while(~scanf("%d",&n)) 20 { 21 memset(s,0,sizeof(s)); 22 for(int i=1;i<=n;i++) 23 { 24 for(int j=1;j<=i;j++) 25 scanf("%d",&s[i][j]); 26 } 27 for(j=1;j<=n;j++) dp[n][j]=s[n][j]; 28 for(i=n-1;i>=1;i--) 29 { 30 for(j=1;j<=i;j++) 31 dp[i][j]=s[i][j] + max(dp[i+1][j],dp[i+1][j+1]); 32 } 33 printf("%d\n",dp[1][1]); 34 } 35 }
动态规划 满足 最优子结构,以及消除重复的节点。
1. 递归
2.递推
3.记忆化搜索
标签:
原文地址:http://www.cnblogs.com/WDKER/p/5136477.html