小猴子下山,沿着下山的路有一排桃树,每棵树都结了一些桃子。小猴子想摘桃子,可是有一些条件须要遵照,小猴子只能沿着下山的方向走,不能回头,每颗树最多摘一个,并且一旦摘了一棵树的桃子,就不能再摘比这棵树结的桃子少的树上的桃子。那么小猴子最多能摘到几颗桃子呢?html
举例说明,好比有5棵树,分别结了10,4,5,12,8颗桃子,那么小猴子最多能摘3颗桃子,来自于结了4,5,8颗桃子的桃树。
import java.util.Scanner;
public class Main{
private static int getMax(int[] peaches) {
// TODO Auto-generated method stub
int len =peaches.length;
if(len == 0||len ==1){
return len;
}
int[] maxs = new int[len];
int maxnum = 0;
for(int i=len-1;i>=0;i--){
int temnum=0;
for(int j=i+1;j
if(peaches[j]>=peaches[i]&&maxs[j]>=temnum){
temnum= maxs[j];
}
if(temnum+1>maxnum){
maxnum = temnum+1;
}
}
maxs[i]=temnum+1;
}
return maxnum;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
int n = sc.nextInt();
int[] peaches = new int[n];
for(int i=0;i
peaches[i] = sc.nextInt();
}
System.out.println(getMax(peaches)+"");
}
}
}
在网上在线模拟测试的 提交了 可是显示正确率0.00% 55555555555~~~~~~(本身测试能够的啊)java