// 装配线问题
public class Forth {
public static void main(String[] args) {
// 有 2 条装配线, 每条装配线上有 6 个装配站
int[][] a = new int[][]{{7, 9, 3, 4, 8, 4}, {8, 5, 6, 4, 5, 7}}; // 通过装配线上每个站所需时间
int[][] b = new int[][]{{2, 3, 1, 3, 4}, {2, 1, 2, 2, 1}}; // 一条装配线上的 i 站到另一条装配线上的 i + 1 站所需的时间
int[] g = new int[]{2, 4}; // 开始进入装配线所需的时间
int[] e = new int[]{3, 2}; // 出装配线所需的时间
int[][] dp = new int[2][6]; // 通过第 i 条装配线的第 j 个装配站的所需时间
dp[0][0] = g[0] + a[0][0];// 一开始进入第 1 条装配线
dp[1][0] = g[1] + a[1][0];// 一开始进入第 2 条装配线
for (int i = 1; i < dp[0].length; i++) { // 从第 2 个装配站开始
dp[0][i] = Math.min(dp[0][i - 1], dp[1][i - 1] + b[1][i - 1]) + a[0][i];
dp[1][i] = Math.min(dp[1][i - 1], dp[0][i - 1] + b[0][i - 1]) + a[1][i];
}
System.out.println(Math.min(dp[0][5] + e[0], dp[1][5] + e[1]));
}
}
装配线问题---动态规划
最新推荐文章于 2024-08-30 18:40:43 发布