gpt4 book ai didi

java - 最小瓶 Java 代码中的意外结果

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:58:49 25 4
gpt4 key购买 nike

以下 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 - 最小瓶 Java 代码中的意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31895940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com