首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在最小瓶Java代码中意外的结果

在最小瓶Java代码中意外的结果
EN

Stack Overflow用户
提问于 2015-08-08 16:09:13
回答 1查看 68关注 0票数 2

下面的Java代码计算存储给定量液体所需的最小瓶数。瓶子的储存能力为{1,5,7,10}。它适用于小值(如4位数字),但对于较大的值,如99999 (堆栈溢出错误)、1000000 (不正确的答案)和更高的值,它可以正常工作。代码有什么问题?修正的代码和故障描述是预期的。

代码语言:javascript
复制
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];
   }
  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-08 16:47:16

试一试

代码语言:javascript
复制
Arrays.fill(dp, 0, dp.length, -1) 

你要离开dp100000 >= 0。

对于堆栈溢出错误,请使用Moar Stack:

代码语言:javascript
复制
java -Xss4m Minimise
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31895940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档