自己编译器上样例过了,0分求助
查看原帖
自己编译器上样例过了,0分求助
1292265
Zzz123456789101112楼主2024/4/9 20:00
#include<iostream>
#include<vector>
using namespace std;
int main() {
	int r,ans;
	cin >> r;
	vector<vector<int>> a(r+1, vector<int>(r+1, 0));
	vector<vector<int>> dp(r+1, vector<int>(r+1, 0));//定义dp数组:到达(i,j)点的最大和
	for(int i=1;i<=r;i++ ){
		for (int j = 1; j <= i; j++)cin >> a[i][j];
	}
	for (int i = 1; i <= r; i++) {//遍历顺序,从上往下,从左往右//初始化,因为从(1,1)开始,所以可省略初始化
		for (int j = 1; j <= i; j++) {
			dp[i][j] = a[i][j]+max(dp[i - 1][j-1], dp[i - 1][j ]);
			//递归,每个位置都与上一行左右两个位置的最大和有关,并比较大小
			if (i == r) {
				ans = max(ans, dp[i][j]);
				//遍历至最后一行,在最后一行各个位置最大和取最大值
			}
		}
	}
	cout << ans;
	return 0;
}


2024/4/9 20:00
加载中...