• 2024-05-14hdu2084数塔
    思路:从顶层走到底层可以变为从底层走到顶层,dp[i][j]=a[i][j]+max(dp[i+1][j],dp[i+1][j+1])importjava.util.Scanner;publicclasshdu2084{publicstaticvoidmain(String[]args){//TODO自动生成的方法存根Scannersc=newScanner(System.
  • 2024-03-28杭电OJ 2084 数塔
    数塔题目明确告诉你,这是一道DP动态规划问题,那么首先先回顾什么是动态规划,就是把原问题分解为多个子问题,再记忆子问题的结果,来降低时间复杂度。观察这个数塔,首先设置一个数组dp[][],令\(dp[j][i]\)表示以第j层的第i个结点为终点的最大和,有以下3种情况:1.边界情况,结点\(i==0\)
  • 2024-02-16数塔(`・ω・´)
    问题描述从数塔的顶层出发,寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或右下走。只需要求出这个最大和即可,不必给出具体路径。三角形的行数为1-100,数字为0-99。样例输入:58121539681051216418109样例输出:60这是
  • 2023-07-22数塔
    1258:【例9.2】数字金字塔分析1:从顶层到底层,面临n-1次决策。向左还是向下?n-1个决策构成一个从顶到底的路径。共有2n-1条路径,我们的任务是从这些路径中选一条,使得经过的数字之和最大。n-1次决策可以用长度为n-1的01串表示。我们穷举所有01串,计算每条路径的和,打擂台求最大。但是
  • 2023-06-12hdu2084数塔(DP)
    思路:简单的数塔DP#include<stdio.h>#include<string.h>#include<algorithm>usingnamespacestd;inta[105][105],dp[105][105];intmain(){intt,n,i,j;scanf("%d",&t);while(t--){scanf("%d",
  • 2023-05-26HDU 1176 免费馅饼(简单动态规划)
    传送门这道题是中文描述的,我相信大家都肯定能够看得懂(滑稽),思路上呢大概就是一个升级版的数塔(点我去看数塔)既然是动态规划问题所以首先肯定要先找出来状态转移方程,我找到的状态转移方程就是a[i][j]+=max(max(a[i+1][j+1],a[i+1][j]),a[i+1][j-1]),其中a[i][j]就是表示第i时刻在k位
  • 2023-05-26HDU 2084 数塔(动态规划入门)
    传送门中文题就不给大家翻译了(手动滑稽),反正大家都看得懂。这是一道动态规划入门的题目,只需要找出状态转移方程即可。状态方程:dp[i][j]=a[i][j]+max(dp[i+1][j],dp[i+1][j])(dp[i][j]表示从第i层第j个数开始搜能得到的最大数)代码如下:#include<cstring>#include<iostream>#include<