我遇到的问题是,有一辆卡车具有一定的容量 “ c” 该工具会将武器从位置 A 偷来的武器运到其位于 B 的家中 彼此之间的距离'd'公里。卡车失去了武器 每行驶一公里。
但是,卡车从A到B或从B到A的行程可以多达 喜欢。同样,它可以在从A到B的途中掉落任何武器 不用担心它会被盗。
事情是我通过对给出的样本测试用例进行逆向工程来为其编写解决方案
武器:3000
容量:1000
距离:1000
答案应该是:833
我的代码是
public class Weapon {
int transportWeapon(int weapon,int capacity,int distance){
if(capacity > distance && weapon > distance&& weapon<=capacity){
return weapon-distance;
}
else{
int brokenWeapon = capacity;//weapon broken
int kmsCovered = (int)((float)(capacity*capacity)/weapon);//kms covered
return transportWeapon(weapon-brokenWeapon, capacity, distance-kmsCovered);
}
}
public static void main(String[] args) {
Weapon w;
w = new Weapon();
System.out.println(w.transportWeapon(100, 200, 50));
System.out.println(w.transportWeapon(200, 100, 125));
System.out.println(w.transportWeapon(3000, 1000, 1000));
}
}
在我看来,我使用的方法非常特殊,花了我很多时间才能找到。我想知道一种有条不紊地解决此类问题的方法。我认为这可能与线性编程(?)有关,但我不确定。