Java 每个项目的算法
产品A价格为10美元,B价格为3美元,C价格为0.50美元。 一个人花100美元买了100件东西。每个人买了多少件 我发现答案是-Java 每个项目的算法,java,algorithm,Java,Algorithm,产品A价格为10美元,B价格为3美元,C价格为0.50美元。 一个人花100美元买了100件东西。每个人买了多少件 我发现答案是- 94 * 0.5 = 47 1 * 3 = 3 5 * 10 = 50 但是,我无法用java实现它,因为我从Hit and Trial中得到了解决方案。 解决这个问题的算法是什么?普通暴力: for (int i1 = 0; i1 <= 10; i1++) { for (int i2 = 0; i2 < 3
94 * 0.5 = 47
1 * 3 = 3
5 * 10 = 50
但是,我无法用java实现它,因为我从Hit and Trial中得到了解决方案。
解决这个问题的算法是什么?普通暴力:
for (int i1 = 0; i1 <= 10; i1++) {
for (int i2 = 0; i2 < 34; i2++) {
int i3 = 100 - i2 - i1;
int total = i1 * 10 + i2 * 3 + i3 / 2;
if (total == 100 && i3 % 2 == 0)
System.out.println(i1 + " * 10 + " + i2
+ " * 3 + " + i3 + " * 0.5 = 100");
}
}
for(int i1=0;i1这是的一个变体,您可以寻找一个基于的解决方案,它比蛮力(在计算复杂性方面)更好。简单的搜索会产生类似以下链接您需要实现解这两个方程的算法
A + B + C = 100 -----------(1)
10A + 3B + 0.5C = 100 -----------(2)
从(2)中,我们可以得出:
C = 100 - A - B
在(2)中替换此信息
那么你可以扣除:
B = 20 - (19A/5)
现在,尝试(使用整数循环)找出A
的“整”值是多少,B
将成为整数值(通常在此类问题中,您总是购买整件商品,比如水果,而不是分数)
你会发现当A=5,B=1
继续以这种方式求解方程,并用Java变量替换A、B和C,您将能够提供解决方案。这两种解决方案都可以很容易找到。ring Bear已经给出了几乎所有的解决方法。ring Bear以以下方式结束:
B = 20 - (19A/5)
不过,我们知道一些其他的事情:
A, B, and C are all non-negative integer values.
这意味着19A/5必须是(1)整数(否则B将不是整数),以及(2)最多20(否则B将是负数)。这意味着对于(1),A必须是5的倍数,对于(2),A最多必须是5
还应注意,要求19A/5
A, B, and C are all non-negative integer values.
19A <= 100
for (A = 0; 19*A <= 100; A += 5)
{
// Show the solution for this value of A (with B = 20 - 19A/5 and C = 100 - A - B).
}