java试图实现一些伪代码、算法
我正在做一个可以用java或伪代码完成的家庭作业,我正在尝试用java代码的方式
背景:有一台制造iphone外壳的机器。这台机器有三种可能的外壳,每种都有不同的油漆成本。给定原始油漆量,返回可以制作的最小外壳量的整数值
这是我的密码
public class ProblemFour
{
//Array entries represent cost for red, green and blue respectively.
int[] classicCost = {4, 1, 1};
int[] coolCost = {3, 2, 1};
int[] modernCost = {1, 3, 2};
String[] names = {"classic", "cool" , "modern"};
int red;
int green;
int blue;
Random generator = new Random();
int pick = generator.nextInt(3);
public int minPhone(int r, int g, int b, String mold)
{
int counter = 0;
if (r > 1 && g > 1 && b > 1 && mold.equals("classic"))
{
counter += 1;
red = r - classicCost[0];
green = g - classicCost[1];
blue = b - classicCost[2];
Random generator = new Random();
int pick = generator.nextInt(3);
counter += minPhone(red, green, blue, names[pick]);
}
else if (r > 1 && g > 1 && b > 1 && mold.equals("cool"))
{
counter += 1;
red = r - coolCost[0];
green = g - coolCost[1];
blue = b - coolCost[2];
Random generator = new Random();
int pick = generator.nextInt(3);
counter += minPhone(red, green, blue, names[pick]);
}
else if (r > 1 && g > 1 && b > 1 && mold.equals("modern"))
{
counter += 1;
red = r - modernCost[0];
green = g - modernCost[1];
blue = b - modernCost[2];
Random generator = new Random();
int pick = generator.nextInt(3);
counter += minPhone(red, green, blue, names[pick]);
}
return counter;
}
}
public static void main(String[] args)
{
ProblemSetThree.ProblemFour example = new ProblemFour();
String[] names = {"classic", "cool" , "modern"};
Random generator = new Random();
int pick = generator.nextInt(3);
//System.out.println(pick);
int testCount = example.minPhone(6, 7, 7, names[pick]);
System.out.println(testCount);
}
}
所以在这个例子中,正确答案是2,而不是3。我的代码有时也会给出。如何确保它只返回最小值
在这之后,我需要把它变成一个动态编程程序。 我对这段代码的优化或软件工程方面不感兴趣,只是它会返回正确的答案
谢谢
# 1 楼答案
因为这看起来像是家庭作业,所以这里有几个提示:
动态规划解决方案是:
递归地,这将是:
现在,你需要拿出一个版本来做同样的事情,但不是递归的。这就是动态规划。提示:可以考虑创建一个类似递归解决方案的大型电子表格,但只需使用一个数组即可,无需递归