#京东#
JAVA第一题就是leetcode抽数的变种
import java.util.Scanner;
public class JingDong {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
long[] dp=new long[n+1];
int index2=0;
int index3=0;
int index5=0;
for(int i=1;i<dp.length;i++){
long num2=dp[index2]*10+2;
long num3=dp[index3]*10+3;
long num5=dp[index5]*10+5;
dp[i]=Math.min(num2,Math.min(num3,num5));
if(num2==dp[i]) index2++;
if(num3==dp[i]) index3++;
if(num5==dp[i]) index5++;
}
System.out.println(dp[dp.length-1]);
}
}
第二题leetcode也有类似的题,金字塔
import java.util.Scanner;
public class JingDong2 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n = sc.nextInt();
int[] pre=new int[n*2+1];
pre[0]=sc.nextInt();
for(int i=2;i<=n;i++){
int[] dp=new int[n*2-1];
for(int j=0;j<(i*2)-1;j++){
for(int k=j-2;k<=j;k++){
if(k<0) continue;
dp[j]=Math.max(pre[k],dp[j]);
}
dp[j]+=sc.nextInt();
}
pre=dp;
}
int max=0;
for(int i=0;i<pre.length;i++){
if(max<pre[i])
max=pre[i];
}
System.out.println(max);
}
}
c++卷那个打怪兽的题,动态规划,类似于背包问题
import java.util.Scanner;
public class JingDong3 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int blood=sc.nextInt();
int[] pai=new int[n];
for(int i=0;i<pai.length;i++){
pai[i]=sc.nextInt();
}
long[] dp=new long[blood+1];
dp[0]=1l;
for(int i=1;i<dp.length;i++){
for(int j=0;j<pai.length;j++){
if(i-pai[j]>=0){
dp[i]=(dp[i]+dp[i-pai[j]])%1000000007;
}
}
}
System.out.println(dp[dp.length-1]);
}
}
全部评论
(2) 回帖