dp数字三角形

#include <iostream>
#include<algorithm>
using namespace std;
int s;
int ans;//最后的距离
int a[10000][10000];
int dp[10000][10000];
int main()
{
   cin>>s;
   for(int i=0;i<s;i++)
   {
       for(int j=0;j<=i;j++)   //此处为一个下三角形    规定此时的下三角只能向下走或者沿着对角线走  这就是两个边界
       {
           cin>>a[i][j];
       }
   }
   for(int i=0;i<s;i++)
   {
       for(int j=0;j<=i;j++)
       {
           dp[i][j]=max(dp[i-1][j],dp[i-1][j-1])+a[i][j];  //前者为向下走   后者为沿着对角线走    a[i][j]为这一步的大小
          ans=max(ans,dp[i][j]);   // dp[i][j]为比较下来最大的,是每一步与前一步的累加和

       }
   }
   cout<<ans<<endl;
   return 0;
}

 

上一篇:#c语言 将字符串加密#


下一篇:Java理解mian方法