hdu 1087 解题报告 Super Jumping! Jumping! Jumping!

本文介绍了如何使用动态规划算法解决HDU平台上的SuperJumping!Jumping!Jumping!问题,通过双层循环逐步求解每个位置的最优解,最终输出最大跳跃值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hdu 1087 Super Jumping! Jumping! Jumping!

hdu 1087 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1087

动态规划题

/************************************************************************/
/*双重循环,里面一重求得每一个位置i时最优解。就比如i从0到n,先求出0位置的最优解是其本身,再求出1位置的最优解(即判断是其本身大还是从0跳到1所得解大,取其大)。再求2位置的最优解(即判断shiite其本身大还是从0跳到2所得解答,还是从1跳到2所得解大(即1的最优解基础上加上2所得解),取其大)。。。。                                                               
/************************************************************************/
#include <stdio.h>
int num[1010],dp[1010];
int main()
{
	int n,max,i;
	while (scanf("%d",&n),n)
	{
		for (i=0;i<n;i++){
			scanf("%d",&num[i]);
			dp[i]=num[i];
		}
		max=0;
		for (i=0;i<n;i++)
		{
			for (j=0;j<i;j++)
				if(num[i]>num[j]&&dp[i]<dp[j]+num[i])//若当前结点大于第j个结点,且当前的最优解dp[i]小于第j个位置的结点-跳到->当前结点i所得解,则当前最优解变为dp[j]+num[i]
					dp[i]=dp[j]+num[i];//在dp的每个元素在从dp[0]到dp[n]的循环中,一步步均变为到达本身位置的最优解


			if(max<dp[i])
				max=dp[i];
		}
 
		printf("%d\n",max);
	}




}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值