{"title":"请用java语言转换下面的c++代码:\n#include<bits/stdc++.h>\nusing namespace std;\nconst int INF=0x3f3f3f3f;\nint n,T,m1,m2;\nint a[1005];\nboolean r[10005][1005];\nboolean l[10005][1005];\nint dp[10005][1005];\nint main(){\n\t scanf("%d%d%d%d",&n,&T,&m1,&m2);\n\t for(int i=1;i<n;i++){\n\t\t scanf("%d",a+i);\n\t }\n\t for(int i=1;i<=m1;i++){\n\t\t int x;\n\t\t scanf("%d",&x);\n\t\t for(int j=1;j<n;j++){\n\t\t\t if(x<=T) r[x][j]=true;\n\t\t\t x+=a[j];\n\t\t }\n\t }\n\t for(int i=1;i<=m2;i++){\n\t\t int x;\n\t\t scanf("%d",&x);\n\t\t for(int j=n;j>=2;j--){\n\t\t\t if(x<=T) l[x][j]=true;\n\t\t\t x+=a[j-1];\n\t\t }\n\t }\n\t memset(dp,INF,sizeof(dp));\n\t dp[0][1]=0;\n\t for(int i=0;i<=T;i++){\n\t\t for(int j=1;j<=n;j++){\n\t\t\t if(i+1<=T) dp[i+1][j]=min(dp[i+1][j],dp[i][j]+1);\n\t\t\t if(i+a[j-1]<=T&&l[i][j]) dp[i+a[j-1]][j-1]=min(dp[i+a[j-1]][j-1],dp[i][j]);\n\t\t\t if(i+a[j]<=T&&r[i][j]) dp[i+a[j]][j+1]=min(dp[i+a[j]][j+1],dp[i][j]);\n\t\t }\n\t }\n\t if(dp[T][n]==INF)\n\t printf("-1\n");\n\t else\n\t printf("%d\n",dp[T][n]);\n}\n","content":"import java.util.Scanner;\n\npublic class Main {\n public static void main(String[] args) {\n Scanner scanner = new Scanner(System.in);\n int n = scanner.nextInt();\n int T = scanner.nextInt();\n int m1 = scanner.nextInt();\n int m2 = scanner.nextInt();\n int[] a = new int[1005];\n boolean[][] r = new boolean[10005][1005];\n boolean[][] l = new boolean[10005][1005];\n int[][] dp = new int[10005][1005];\n \n for (int i = 1; i < n; i++) {\n a[i] = scanner.nextInt();\n }\n \n for (int i = 1; i <= m1; i++) {\n int x = scanner.nextInt();\n for (int j = 1; j < n; j++) {\n if (x <= T) {\n r[x][j] = true;\n }\n x += a[j];\n }\n }\n \n for (int i = 1; i <= m2; i++) {\n int x = scanner.nextInt();\n for (int j = n; j >= 2; j--) {\n if (x <= T) {\n l[x][j] = true;\n }\n x += a[j-1];\n }\n }\n \n for (int i = 0; i < dp.length; i++) {\n for (int j = 0; j < dp[0].length; j++) {\n dp[i][j] = INF;\n }\n }\n \n dp[0][1] = 0;\n for (int i = 0; i <= T; i++) {\n for (int j = 1; j <= n; j++) {\n if (i + 1 <= T) {\n dp[i+1][j] = Math.min(dp[i+1][j], dp[i][j] + 1);\n }\n if (i + a[j-1] <= T && l[i][j]) {\n dp[i+a[j-1]][j-1] = Math.min(dp[i+a[j-1]][j-1], dp[i][j]);\n }\n if (i + a[j] <= T && r[i][j]) {\n dp[i+a[j]][j+1] = Math.min(dp[i+a[j]][j+1], dp[i][j]);\n }\n }\n }\n \n if (dp[T][n] == INF) {\n System.out.println("-1");\n } else {\n System.out.println(dp[T][n]);\n }\n }\n}

C++ to Java Code Conversion: Dynamic Programming Solution

原文地址: https://www.cveoy.top/t/topic/qmxi 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录