首页 > 代码库 > poj1163The Triangle(DP)
poj1163The Triangle(DP)
题目意思:
给出一个数字三角形,计算从头走到尾的数字之和的最大值。规定只能向下向右下走。
http://poj.org/problem?id=1163
题目分析:
简单DP,动态转化方程:dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+a[i][j].从下到上进行dp
AC代码:
#include<iostream> using namespace std; int a[101][101],dp[101][101]; int main() { int n; while(cin>>n){ for(int i=1;i<=n;i++){ for(int j=0;j<i;j++){ cin>>a[i][j]; } } for(int i=n;i>0;i--){//从下往上dp(只能上后左上) for(int j=0;j<i;j++){ if(i==n) { dp[i][j]=a[i][j]; //cout<<dp[i][j]<<" "; } else{ dp[i][j]=max(dp[i+1][j],dp[i+1][j+1]); dp[i][j]+=a[i][j]; //cout<<dp[i][j]<<" "; } } } cout<<dp[1][0]<<endl; } return 0; }
poj1163The Triangle(DP)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。