最小瓶数 Java 代码中的意外结果
Unexpected results in minimum bottles Java code
以下 Java 代码计算存储给定体积液体所需的最少瓶子数。瓶子的存储容量是 {1,5,7,10}。它适用于较小的值(如 4 位数字),但适用于较大的值,如 99999(堆栈溢出错误)、1000000(错误答案)及以上。代码有什么问题?预计会更正代码以及故障描述。
import java.util.Scanner;
import java.util.Arrays;
public class Minimise
{
static final int INF = 1000000000;
static int dp[]=new int[1000010];
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
System.out.println("enter the volume");
int size = s.nextInt();
Arrays.fill(dp, 0, 100000, -1);
System.out.println("minimum number of bottles needed:\n"+findmin(size));
}
static int findmin(int size)
{
if(size<0)
return INF;
else if(size==0)
return 0;
if( dp[size] != -1 )
return dp[size];
else
{
dp[size] = min( findmin(size-10)+1, findmin(size-7)+1, findmin(size-5)+1, findmin(size-1)+1 );
return dp[size];
}
}
static int min(int a,int b,int c,int d)
{
int arr[] = new int[4];
arr[0] = a;
arr[1] = b;
arr[2] = c;
arr[3] = d;
Arrays.sort(arr);
return arr[0];
}
}
尝试
Arrays.fill(dp, 0, dp.length, -1)
您要离开 dp[100000] >= 0。
对于堆栈溢出错误,使用 Moar Stack:
java -Xss4m Minimise
以下 Java 代码计算存储给定体积液体所需的最少瓶子数。瓶子的存储容量是 {1,5,7,10}。它适用于较小的值(如 4 位数字),但适用于较大的值,如 99999(堆栈溢出错误)、1000000(错误答案)及以上。代码有什么问题?预计会更正代码以及故障描述。
import java.util.Scanner;
import java.util.Arrays;
public class Minimise
{
static final int INF = 1000000000;
static int dp[]=new int[1000010];
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
System.out.println("enter the volume");
int size = s.nextInt();
Arrays.fill(dp, 0, 100000, -1);
System.out.println("minimum number of bottles needed:\n"+findmin(size));
}
static int findmin(int size)
{
if(size<0)
return INF;
else if(size==0)
return 0;
if( dp[size] != -1 )
return dp[size];
else
{
dp[size] = min( findmin(size-10)+1, findmin(size-7)+1, findmin(size-5)+1, findmin(size-1)+1 );
return dp[size];
}
}
static int min(int a,int b,int c,int d)
{
int arr[] = new int[4];
arr[0] = a;
arr[1] = b;
arr[2] = c;
arr[3] = d;
Arrays.sort(arr);
return arr[0];
}
}
尝试
Arrays.fill(dp, 0, dp.length, -1)
您要离开 dp[100000] >= 0。
对于堆栈溢出错误,使用 Moar Stack:
java -Xss4m Minimise