【发布时间】:2015-09-20 01:39:08
【问题描述】:
我想创建一个数组列表,这样当我打印 ArrayList.size() 时,我希望它显示 100 或其他一些大数字。
场景 这是一个程序,我试图找到适合条件的数组列表的最小大小。所以我希望 ArrayList 的初始值很大,以便它不断被较小的组合覆盖。
类似于找到最小数字的程序,您将变量从最小初始化为一个大数字,以便在线性遍历中被覆盖。
编辑:这是我要解决的问题 求最小面额3和5的硬币找4找零。是的,基本上应该返回是不可能的。
如果问题只是找到硬币的数量,我已经做对了
public class FindCount
{
public static void main(String[] args)
{
int coins = fun(4);
if(coins == 999)
System.out.println("Not possible to make change with this denomination");
else
System.out.println(coins);
}
static int fun(int n)
{
if(n == 0)
return 0;
int ret1 = 999;
int ret2 = 999;
if(n >= 3)
{
int rec1 = fun(n-3);
if(rec1 != 999)
ret1 = 1+rec1;
}
if(n >= 5)
{
int rec2 = fun(n-5);
if(rec2 != 999)
ret2 = 1+rec2;
}
int totalret = min(ret1, ret2);
return totalret;
}
static int min(int a, int b)
{
return a<b?a:b;
}
}
请注意,上面我使用了一个名为 totalret 的变量,如果是 999,我可以用它来声明不可能达到这个结果。
但是,如果我被要求打印所需的元素而不仅仅是查找计数,那么如果有任何路径无法进行更改,程序就会出错。这是因为,这里的 totalret 被初始化为 null,而不是像上面的程序中那样的 999 个元素的大型 ArrayList。
import java.util.ArrayList;
public class PrintSequence
{
static int[] options = {3,5};
public static void main(String[] args)
{
ArrayList<Integer> result = new ArrayList<Integer>();
result = fun(4);
for(int i = 0;i<result.size();i++)
System.out.print(result.get(i));
}
static ArrayList<Integer> fun(int n)
{
int smallest = 999;
ArrayList<Integer> totalret = null;
for(int i = 0;i<options.length;i++)
{
if(n-options[i] >= 0)
{
ArrayList<Integer> reci = fun(n-options[i]);
ArrayList<Integer> reti = new ArrayList<Integer>();
reti.addAll(reci);
reti.add(0,options[i]);
if(reti.size() < smallest)
{
totalret = reti;
smallest = reti.size();
}
}
}
if(totalret == null)
totalret = new ArrayList<Integer>();
return totalret;
}
}
请建议我如何编辑打印程序以打印这是不可能的。
【问题讨论】:
-
这听起来像是一个 XY 问题。大图是什么?你要解决什么问题?
-
@Dici,请稍等。将发布编辑。
-
请阅读指南How do I ask a good question,尤其是关于最小、完整和可验证示例(MCVE)的部分。这将帮助您自己解决问题。如果您这样做但仍然卡住,您可以回来发布您的 MCVE、您尝试了什么以及结果如何,以便我们更好地帮助您。
-
@Dici,请参阅编辑。