私は、Java または疑似コードで実行できる宿題の問題に取り組んでいます。Java コードの方法を試しています。
背景: iPhone のケースを作る機械が存在します。マシンには 3 つのケースがあり、それぞれに異なる塗装コストがかかります。元の塗料の量が与えられた場合、作成できるケースの最小量の整数値を返します。
ここに私のコードがあります、
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);
}
}
したがって、この例では、正解は 3 ではなく 2 です。私のコードでは、どちらかが返されることがあります。最小数のみを返すようにするにはどうすればよいですか?
この後、これを動的プログラミング プログラムに変換する必要があります。このコードの最適化やソフトウェア エンジニアリングの側面には興味がありませんが、正しい答えが返されることだけに関心があります。
ありがとうございました。