zoukankan      html  css  js  c++  java
  • hdu 1087 Super Jumping! Jumping! Jumping!

    /*
    hdu 1087 Super Jumping! Jumping! Jumping!
    这题的意思就是你跳了一个格子那么你走的下一个格子的权值必须大于前一个格子的权值。
    要求最后的权值之和最大。


    设a[i](0<=i<n)为其对应的格子的权值
    那么动态规划的方程可以这么列设f(i)为走到第i个位子时的权值和的最大值。
    f(i)=max{f(j)|0<=j<i and a[i]>a[j]}+a[i];

    那么我们要记录的信息就是f(j)的表;

    因为我们不知道他最后可能会走哪一个格子所以要最后f(i)表中记录的最大值就是我们要的答案。

    */

    #include<stdio.h>
    #include<string.h>
    int a[1005];   //a存放权值
    int b[1005];   //b存放最大权值之和,因为不用存放路径怎么走就不用了哈哈
    int f(int i)
    {
    	int j,max=0;
    	for(j=0;j<i;j++)
    	{
    		if(b[j]>max&&a[j]<a[i])
    		{
    			max=b[j];
    		}
    	}
    	b[i]=max+a[i];
    }
    int main()
    {
    	int n,i,max;
    	while(scanf("%d",&n)!=EOF)
    	{
    		max=0;
    		memset(a,0,sizeof(a));
    		memset(b,0,sizeof(b));
    		if(n==0) break;
    		for(i=0;i<n;i++)
    		{
    			scanf("%d",&a[i]);
    		}
    		for(i=0;i<n;i++)
    		{
    			f(i);
    			if(b[i]>max)
    			{
    				max=b[i];
    			}
    		}
    		printf("%d\n",max);
    	}
    	return 0;
    }


  • 相关阅读:
    包含min函数的栈
    栈的应用
    给定金额m和红包数量n
    顺时针打印矩阵
    二叉树的镜像
    elementUI table表头错位问题
    金额格式化
    ajax跨域问题全解
    JavaScript 的 this 原理
    vue技术分享-你可能不知道的7个秘密
  • 原文地址:https://www.cnblogs.com/leejuen/p/5547496.html
Copyright © 2011-2022 走看看