第一道题:
牛牛喜欢跳格子,希望我帮他计算出跳n个格子的最大值,
题意:
有n个格子,跳1格只能拿跳到的那一格的一半分(如果不能整除则向上取整),跳2格可以拿第2格的全部分,问跳n格最多能拿多少分。
package main;
import java.util.*;
public class Main{
public static void main(String args[]){
Scanner in = new Scanner(System.in);
int T = in.nextInt();
while (T-->0){
int n = in.nextInt();
int[] nums = new int[n];
for (int i = 0; i < n; i++) {
nums[i] = in.nextInt();
}
int res = maxScore(nums);
System.out.println(res);
}
}
public static int maxScore(int[] nums){
int len = nums.length;
int[] dp = new int[len+1];
dp[0] = 0;
dp[1] = nums[0];
for (int i = 2; i <= len; i++) {
if(i == 2){
dp[i] = Math.max(dp[i-1]+nums[i-1]/2,dp[i-2]);
} else {
dp[i] = Math.max(dp[i-1]+nums[i-1]/2,dp[i-2]+nums[i-1]);
}
}
return dp[len];
}
}