常考面试算法题之动态规划

猴子摘桃

小猴子下山,沿着下山的路有一排桃树,每棵树都结了一些桃子。小猴子想摘桃子,但是又一些条件需要遵守,小瘦子只能沿着下山的方向走,不能回头,每棵树最多摘一个,而且一旦摘了一棵树的桃子,就不能再摘比这棵树结的桃子少的树上的桃子,那么小猴子最多能摘到几课桃子呢?
距离说明,比如有五棵树,分别结了10,4,5,12,8棵桃子,那么小猴子最多能摘3颗桃子,来自于结了4,5,12颗桃子的桃树。

public class Main {
    public static void main(String[] args) {
        int[] m = {10,4,5,12,8};
        int maxP[]=new int [m.length];
        for(int j=0;j<m.length;j++){
            maxP[j]=1;
            for (int k=0;k<j;k++){
                if(maxP[k]+1>maxP[j] && m[j]>m[k]){
                    maxP[j]=maxP[k]+1;
                }
            }
        }
        int maxPeach=1;
        for (int k=0;k<maxP.length;k++){
            if(maxPeach<maxP[k]){
                maxPeach=maxP[k];
            }
        }
        System.out.println(maxPeach);
    }
 }

页码统计

牛牛新买了一本算法书,算法书一共有n页,页码从1到n。牛牛于是想了一个算法题目:在这本算法书页码中0~9每个数字分别出现了多少次?
输入描述:

输入包括一个整数n(1 ≤ n ≤ 1,000,000,000)

输出描述:

输出包括一行10个整数,即0~9这些数字在页码中出现的次数,以空格分隔。行末无空格。
示例1
输入

999

输出

189 300 300 300 300 300 300 300 300 300

创造新世界

双核处理

堆砖块

不等式数列

牛牛的数列

牛牛现在有一个n个数组成的数列,牛牛现在想取一个连续的子序列,并且这个子序列还必须得满足:最多只改变一个数,就可以使得这个连续的子序列是一个严格上升的子序列,牛牛想知道这个连续子序列最长的长度是多少。
输入描述:

输入包括两行,第一行包括一个整数n(1 ≤ n ≤ 10^5),即数列的长度;
第二行n个整数a_i, 表示数列中的每个数(1 ≤ a_i ≤ 10^9),以空格分割。

输出描述:

输出一个整数,表示最长的长度。
示例1
输入

6 
7 2 3 1 5 6

输出

5

暗黑的字符串

数字和为sum的方法数

Java代码实现

Learn ,Practice ,Summary !
原文地址:https://www.cnblogs.com/daminzhou/p/8295251.html