一维消消乐是一款非常简单的游戏。有几颗珠子排成一排,每一颗珠子有一个价值w;(可能是负数) 游戏是这样,你可以选择如若干对相邻的珠子,让他们同时消去。每一对珠子的消失,都会使得总分数加上两颗珠子相乘的分数。注意,每个珠子只能消一次,并且珠子消去以后,还会占位。 输入格式: 输入第一行一个整数n(1≤n≤10000) 接下来一行输入 几个整数w(-1000 ≤w: ≤ 1000)。 输出格式: 输出最大的分数。 样例输入: 8 -9 -5 -4 -2 4 -5 -4 2 样例输出: 73
import java.util.*; public class LANQIAO1 { public static final int maxn = 1010; public static int[][] dp = new int[maxn][2]; // 1代表和前面组合,0则没有 public static int[] w = new int[maxn]; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for (int i = 1; i <= n; i++) { w[i] = sc.nextInt(); } // 第一个无法和前面组合,所以为 0 dp[1][0] = 0; // 从二开始遍历,把每种可能计算出来取最大值 for (int i = 2; i <= n; i++) { dp[i][0] = Math.max(dp[i-1][0],dp[i-1][1]); dp[i][1] = dp[i - 1][0] + w[i] * w[i - 1]; } System.out.println(Math.max(dp[n][0],dp[n][1])); } }