然后其他奶牛从其尖端开始穿过三角形并“向下”移动到两个对角相邻的奶牛中的一个,直到到达“底部”行。奶牛的得分是沿途参观的奶牛数量的总和。得分最高的母牛赢得了那个框架。7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
input
output
样本输入
5 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5
样本输出
30
Hint
如上所示,通过穿越奶牛可以实现最高分。7
*
3 8
*
8 1 0
*
2 7 4 4
*
4 5 2 6 5
#include <iostream> #include <cstdio> #include <fstream> #include <algorithm> #include <cmath> #include <deque> #include <vector> #include <queue> #include <string> #include <cstring> #include <map> #include <stack> #include <set> #include <sstream> #define IOS ios_base::sync_with_stdio(0); cin.tie(0); #define Mod 1000000007 #define eps 1e-6 #define ll long long #define INF 0x3f3f3f3f #define MEM(x,y) memset(x,y,sizeof(x)) #define Maxn 350+5 using namespace std; int main() { int n; int dp[Maxn][Maxn];//三角形 cin>>n; for(int i=1; i<=n; i++)//输入 for(int j=1; j<=i; j++) cin>>dp[i][j]; for(int i=n-1; i>=1; i--)//从小往上找最优解 { for(int j=1; j<=i; j++) dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+dp[i][j]; } cout<<dp[1][1]<<endl;//输出 }
原文:https://www.cnblogs.com/sky-stars/p/11332956.html