欢迎光临散文网 会员登陆 & 注册

《算法设计与分析》实验报告4

2022-08-05 10:21 作者:老师-忘记密码  | 我要投稿

算法设计与分析》实验报告4

 

实验名称: 汽车加油跑路程问题

系    别:xxx           

专    业:xxx           

班    级:xxx

姓    名:xxx          

学    号:xxx

实验日期:xx年xx月xx日


 

1.  算法题目

根据贪心法的设计思想和算法步骤,要求学生设计一个贪心算法,用于解决汽车加油跑路程的问题。汽车行驶n公里的路程,中间有m个加油站。每次要加油时,选择能让剩余汽油跑最远距离的加油站,加满汽油。因此,设计一个指标=剩余汽油能跑最长距离的加油站j,依次考虑在后续路程中存在的加油站,即可进行贪心操作。因此使用贪心算法可以解决该问题。

 

2.  设计思路与步骤

首先判断加油站的距离是否都不大于汽车一次最多能行驶的距离;

定义temp为汽车还能走的距离,判断temp是否大于下个加油站的距离,若不足则在下个加油站加油(令choice[i]=1),否则不在下个加油站加油(令choice[i]=0);

最后输出选择的加油站即可。

 

3.  算法实现与代码

#include<stdio.h>

#include<stdlib.h>

int main() {

int n, m, i, journey = 0, temp = 0, j = 1;

int a[20] = {0};

int choice[20] = {0};

printf("请输入汽车加满油可以行使的路程:");

scanf("%d", &n);

printf("请输入加油站的个数:");

scanf("%d", &m);

a[0] = 0;

for(i = 1; i <= m; i++) {

printf("请输入第%d个加油站与第%d个加油站的距离:", i-1, i);

scanf("%d", &a[i]);

journey = journey + a[i];

}

for(i = 1; i <= m; i++)

if(a[i] > n) {

printf("加油站过远!汽车无法到达!请选择其他路线!\n");

exit(0);

}

temp = n;

for(i = 0; i < m; i++) {

if(temp < a[i + 1]) {

choice[i] = 1;

temp = n - a[i + 1];

}

else {

choice[i] = 0;

temp = temp - a[i + 1];

}

}

printf("\n选择的加油站为:");

for(i = 1; i <= m; i++)

if(choice[i] == 1)

printf(" %d", i);

printf(" %d", m);

return 0;

}


4.  测试用例与结果

5.  问题与总结:

答:xxx。

 

《算法设计与分析》实验报告4的评论 (共 条)

分享到微博请遵守国家法律