Java 算法:戳气球问题求最大硬币数量
public class Main { public static void main(String[] args) { int[] nums = {3, 1, 5, 8}; int n = nums.length;
int[][] dp = new int[n][n];
for (int i = 0; i < n; i++) {
dp[i][i] = nums[i];
}
for (int i = n - 2; i >= 0; i--) {
for (int j = i + 1; j < n; j++) {
int max = 0;
for (int k = i; k <= j; k++) {
int left = 1, right = 1;
if (i != 0) {
left = nums[i - 1];
}
if (j != n - 1) {
right = nums[j + 1];
}
int coins = left * nums[k] * right;
if (k > i) {
coins += dp[i][k - 1];
}
if (k < j) {
coins += dp[k + 1][j];
}
max = Math.max(max, coins);
}
dp[i][j] = max;
}
}
System.out.println(dp[0][n - 1]);
}
}
原文地址: https://www.cveoy.top/t/topic/lixx 著作权归作者所有。请勿转载和采集!