HDU 1087 Super Jumping! Jumping! Jumping! 简单DP
2011-04-18 16:25
537 查看
这是一道简单的DP,应该从前面往后面找,结果我一开始用递归,从后面往前面找,悲剧了很久
这里的思想是先从第一个开始找到第一个的最优解,然后第二个,第三个。。。。而为什么要一个一个来求呢,那是因为后面的都是通过前面的来找最优解(dis[j] > max && num[j] < num[i] ),最后把全部的最优解都找到,而本题求的是全题的最优解,所以还要找到全局的最优解( Max )。
这里的思想是先从第一个开始找到第一个的最优解,然后第二个,第三个。。。。而为什么要一个一个来求呢,那是因为后面的都是通过前面的来找最优解(dis[j] > max && num[j] < num[i] ),最后把全部的最优解都找到,而本题求的是全题的最优解,所以还要找到全局的最优解( Max )。
#include<stdio.h> #include<string.h> int n,num[10000],dis[10000]; int cal( ) { int Max = 0; for( int i = 1; i <= n;++i ) { int max = 0,pos = 0; for( int j = 0; j <= i; ++j )//找前面已经存在且符合条件的最优解 if( dis[j] > max && num[j] < num[i] ) max = dis[j]; dis[i] += num[i] + max;//找到后把本身加进去 if( dis[i] > Max ) Max = dis[i]; } return Max; } int main( ) { while( scanf( "%d",&n ),n ) { num[0] = 0; memset( dis,0,sizeof( dis ) ); for( int i = 1; i <= n; ++i ) scanf( "%d",&num[i] ); printf( "%d\n",cal( ) ); } return 0; }
相关文章推荐
- HDU 1087Super Jumping! Jumping! Jumping! —简单DP
- hdu 1087Super Jumping! Jumping! Jumping!(简单的dp就是一个判断条件两个for循环,将这个量与前面出现的两进行比较)
- HDU 1087-Super Jumping! Jumping! Jumping!(简单DP)
- [简单DP]Super Jumping! Jumping! Jumping! HDU - 1087
- hdu 1087 Super Jumping! Jumping! Jumping! 简单的dp
- HDU 1087 Super Jumping! Jumping! Jumping! 简单Dp
- HDU 1087 Super Jumping! Jumping! Jumping! 【简单dp思维题】
- HDU 1087 Super Jumping! Jumping! Jumping! && 1114 Piggy-Bank 简单dp
- hdu 1087 Super Jumping! Jumping! Jumping!(简单dp)
- (step3.2.2)hdu 1087(Super Jumping! Jumping! Jumping!——简单DP)
- hdu 1087 Super Jumping! Jumping! Jumping!(简单dp)
- HDU1087--Super Jumping! Jumping! Jumping! (DP动态规划最大上升子序列的和)
- HDU 1087 Super Jumping! Jumping! Jumping! DP
- HDU - 1087 Super Jumping! Jumping! Jumping!(dp)
- HDU 1087 Super Jumping! Jumping! Jumping!(DP,上升子序列)
- hdu 1087 Super Jumping! Jumping! Jumping! ----dp
- hdu 1087 Super Jumping! Jumping! Jumping!(水~dp)
- HDU 1087 Super Jumping! Jumping! Jumping! (DP,水题)
- HDU-1087-DP-Super Jumping! Jumping! Jumping!
- hdu 1087 Super Jumping! Jumping! Jumping!(dp 最长上升子序列和)