第一题最后想出来一个办法,但是没时间了没写完,大佬能帮我看看这个能过吗? int main() { int T; cin >> T; //遍历所有测试用例 for (int i = 0; i < T; i++) { int n; cin >> n; int a, b; if (n == 1) { cin >> a; cout << a << endl; continue; } cin >> a; if (n == 2) { cin >> b; b = a + (b + 1) / 2; cout << b << endl; continue; } cin >> b; b = a + (b + 1) / 2; int c = 0; for (int i = 2; i < n; i++) { cin >> c; c = max(b + (c + 1) / 2, a + c); a = b; b = c; } cout << c << endl; } return 0; }
第一题 ``` 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]; } } ```