HDU | 2084 数塔【动态规划】

动态规划 同时被 2 个专栏收录
26 篇文章 0 订阅
5 篇文章 0 订阅

动态规划 专题

HDU 2084 数塔

题目描述

在这里插入图片描述

输入输出样例

在这里插入图片描述

时空限制

  • Time Limit: 1000/1000 MS (Java/Others)
  • Memory Limit: 32768/32768 K (Java/Others)

思路

简单的动态规划问题。找到递推式即可。

它是从倒数第二行往上开始递推的,每个数都等于它自己加上 正下方斜右方 两者取最大值。

dp[j-1][k-1] += max(dp[j][k], dp[j][k-1]);

代码

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
int dp[110][110];

int main(){
	int n;
	scanf("%d", &n);
	memset(dp,0,sizeof(dp));
	for(int i = 1; i <= n; ++i){
		int m;
		scanf("%d", &m);
		for(int j = 1; j <= m; ++j){
			for(int k = 1; k <= j; ++k){
				scanf("%d",&dp[j][k]);	
			}	
		}
		for(int j = m; j > 1; --j){
			for(int k = m; k > 1; --k){
				dp[j-1][k-1] += max(dp[j][k], dp[j][k-1]);
			}
		}
		printf("%d\n", dp[1][1]);
	}
	return 0;
} 
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值