[英]How to initialize static array variable array in Java
对于动态编程问题,我的代码中有类似的东西。
class Solution
{
static int dp[][] = new int[1000][1000];
static int someMethod(int a, int b) {
// use dp[][] somewhere here
// some recursion statements
someMethod(a-x,b-y);
}
}
我想用-1
而不是0
初始化dp
中的所有值。 方法内部的标准初始化不是一个选项,因为它使用递归来进行多次调用。
解决方案进入在线判断工具,因此也无法真正配置任何东西。 任何纯代码解决方案将不胜感激。
你说:
我想用 -1 而不是 0 初始化 dp 中的所有值。
调用创建、填充和返回所需数组的static
方法。
class Solution
{
static int[][] dp = Solution.makeArray() ;
static int[][] makeArray() {
int limit = 1_000 ;
int[][] a = new int[ limit ][ limit ] ;
for ( row = 0; row < limit ; row ++) {
for ( column = 0; column < limit ; column ++) {
a[ row ][ column ] = -1 ;
}
}
return a ;
}
}
class Solution
{
static int dp[][];
static {
dp = new int[1000][1000];
for (int[] row: dp) {
Arrays.fill(row, -1);
}
}
static int someMethod(int a, int b) {
// use dp[][] somewhere here
// some recursion statements
someMethod(a-x,b-y);
}
}
如果您需要使用递归来执行此操作,您可以执行以下操作:出于演示目的,我减小了数组的大小。 但是对于 1000 x 1000 阵列,除非您修改 JVM 参数,否则您可能会得到StackOverflow
。 使用 Eclipse,我必须通过
java -Xss28m
命令。
import java.util.Arrays;
class Solution {
static int dp[][] = new int[10][10];
public static void main(String[] arg) {
someMethod(0, 0);
for (int[] row : dp) {
System.out.println(Arrays.toString(row));
}
}
印刷
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
方法
static void someMethod(int a, int b) {
if (b < dp[0].length - 1) {
someMethod(a, b + 1);
} else if (a < dp.length - 1) {
someMethod(a + 1, 0);
}
dp[a][b] = -1;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.