返回题解分享
讨论 / 题解分享/ 帖子详情

数字三角形(编程题) - 题解

#include<bits/stdc++.h>
using namespace std;
const int N = 200;
int g[N][N];
int dp[N][N];
int main()
{	
	int n;cin >> n;
	memset(g,0,sizeof(g));
	for(int i = 1;i<=n;i++){
		for(int j = 1;j<=i;j++){
			cin >> g[i][j];
		}
	}
	memset(dp,0,sizeof(dp));
	dp[1][1]=g[1][1];
	for(int i = 2;i<=n;i++){
		for(int j = 1;j<=i;j++){
			dp[i][j]=max(dp[i-1][j-1],dp[i-1][j])+g[i][j];
		}
	}
	int res=0;
	if(n%2==0)res=max(dp[n][n/2],dp[n][n/2+1]);
	else res=dp[n][n/2+1];
	cout << res;
	return 0;
}
0 回复 0 转发 0 喜欢 1 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!