请用java语言转换下面的c++代码:#includebitsstdc++husing namespace std;const int INF=0x3f3f3f3f;int nTm1m2;int a1005;bool r100051005;bool l100051005;int dp100051005;int main scanfdddd&n&T&m1&m2; forint i=1;in;i++
import java.util.Scanner;
public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int T = scanner.nextInt(); int m1 = scanner.nextInt(); int m2 = scanner.nextInt(); int[] a = new int[1005]; boolean[][] r = new boolean[10005][1005]; boolean[][] l = new boolean[10005][1005]; int[][] dp = new int[10005][1005];
for (int i = 1; i < n; i++) {
a[i] = scanner.nextInt();
}
for (int i = 1; i <= m1; i++) {
int x = scanner.nextInt();
for (int j = 1; j < n; j++) {
if (x <= T) {
r[x][j] = true;
}
x += a[j];
}
}
for (int i = 1; i <= m2; i++) {
int x = scanner.nextInt();
for (int j = n; j >= 2; j--) {
if (x <= T) {
l[x][j] = true;
}
x += a[j-1];
}
}
for (int i = 0; i < dp.length; i++) {
for (int j = 0; j < dp[0].length; j++) {
dp[i][j] = INF;
}
}
dp[0][1] = 0;
for (int i = 0; i <= T; i++) {
for (int j = 1; j <= n; j++) {
if (i + 1 <= T) {
dp[i+1][j] = Math.min(dp[i+1][j], dp[i][j] + 1);
}
if (i + a[j-1] <= T && l[i][j]) {
dp[i+a[j-1]][j-1] = Math.min(dp[i+a[j-1]][j-1], dp[i][j]);
}
if (i + a[j] <= T && r[i][j]) {
dp[i+a[j]][j+1] = Math.min(dp[i+a[j]][j+1], dp[i][j]);
}
}
}
if (dp[T][n] == INF) {
System.out.println("-1");
} else {
System.out.println(dp[T][n]);
}
}
原文地址: https://www.cveoy.top/t/topic/iF0L 著作权归作者所有。请勿转载和采集!