您的位置:首页 > 其它

一个数学问题

2018-04-02 00:00 281 查看
问题如下:

/**
* 已知: 每个飞机只有一个油箱, 飞机之间可以相互加油(注意是相互,没有加油机)
* 一箱油可供一架飞机绕地球飞半圈,问题:为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?
* (所有飞机从同一机场起飞,而且必须安全 返回机场,不允许中途降落,中间没有飞机场)
*/


代码如下:

public class Mathtest3 {

public static void main(String[] args) {
wenti2();
}

/** * 已知: 每个飞机只有一个油箱, 飞机之间可以相互加油(注意是相互,没有加油机) * 一箱油可供一架飞机绕地球飞半圈,问题:为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机? * (所有飞机从同一机场起飞,而且必须安全 返回机场,不允许中途降落,中间没有飞机场) */
static void wenti2() {
int zongjuli = 100; // 这个表示总共的距离.
int youxiang = 50; // 这个表示邮箱大小

for(int i = 5; i < youxiang/2; i++) {
System.out.println("前段加油:" + i + " , 总共需要出动飞机多少架:" + (qianduanxuyaodefeijishuliang(i) + houduanxuyaodefeijishuliang(i)));
}
}

// 前段需要的飞机数量
static int qianduanxuyaodefeijishuliang(int x) {
int nengjiayou = 50 - (2 * x);
int kejiayou = x;

if(nengjiayou > kejiayou) {
return 1;
}
else if(nengjiayou > 0) {
return kejiayou % nengjiayou == 0 ? kejiayou/nengjiayou : kejiayou/nengjiayou + 1;
}
else {
return 100000;
}
}

// 后段需要的飞机数量
static int houduanxuyaodefeijishuliang(int x) {
int juli = x;
int feiji = 1;

while(juli < 50) {
// 来一架飞机
feiji ++;
// 能前进距离
int qianjin = (50 - (50-juli))/feiji;
// 现在的距离
juli = juli + qianjin;
}

return feiji - 1;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数学 数学题 最优解