数字三角形 动态规划 由下至上
数字三角形 , 就 从上至下的 和最大是几 ? 可以采用从下到上 用贪心的方法 算出来 最大值 下面附上代码
1 #include<stdio.h> 2 #include<string.h> 3 #include<math.h> 4 #include<iostream> 5 #include<algorithm> 6 #include<queue> 7 #include<vector> 8 #include<set> 9 #include<stack> 10 #include<string> 11 #include<sstream> 12 #include<map> 13 #include<cctype> 14 #include<limits.h> 15 using namespace std; 16 int main() 17 { 18 int sum,a[5055],t,n; 19 while(scanf("%d",&n)!=EOF) 20 { 21 sum=n*(n+1)/2; 22 for(int i=1;i<=sum;i++) 23 scanf("%d",&a[i]); 24 int count1=1; 25 for(int i=sum,total=sum;i-n>0;i--,total--) 26 { 27 a[i-n]=max(a[i-n]+a[total],a[i-n]+a[total-1]); 28 count1++; 29 if(count1==n) 30 { 31 count1=1; 32 n--; 33 i--; 34 total--; 35 } 36 } 37 printf("%d\n",a[1]); 38 } 39 return 0; 40 }