最短过桥时间

一道面试题讲述了5个人过桥的问题,桥上最多容纳2人,且有时间限制。作者采用递归方法求解,找出最短的过桥时间,最终得出答案为15分钟。欢迎分享更优解法。
摘要由CSDN通过智能技术生成

 今天在网上看到了一条面试题目,由于我也很就没有编程了,之前一直都在看微机原理跟操作系统,所以我就把这道题目做了一下。

题目是:在晚上有5个人过一座桥,桥上同时只能有2个人在,这5个人过桥的时间是1分种,3分钟,6分钟,8分钟,12分钟,

桥上的等只能亮30分钟,求出最短的过桥时间

我的利用了最笨的方法做,就是每种情况都列出来然后找出最短的时间。因为我对数据结构里面的算法知道的也不多,很惭愧。

不多说了,进入正题。如果因为桥可以同时有2个人在上面,所以2个人同时出发的话,就会比一个人先出发花的时间会短一点,

然后过了桥,然后再一个人上桥,这样桥上就可以保持有2个人在上面,这样就可以了。因为每个人上桥的时候的判断过程都是

一样的,当然除了第一个,跟第二个,如果利用顺序编程的话会很多重复,所以我就利用了递归来做。编程的时候我也遇到了一些

问题,就是忘记了给递归返回重新赋值,因为递归返回之后就要做上一次一样的事情,所以数据也要跟之前的一样,所以我就利用

局部变量来解决这个问题。

这是我的代码

//在晚上有5个人过一座桥,桥上同时只能有2个人在,这5个人过桥的时间是
//1分种,3分钟,6分钟,8分钟,12分钟,桥上的等只能亮30分钟,求出最短的过桥时间
#include<stdio.h>
#define NUMBER 5    //过桥人的个数
struct people{
	int start_time;
	int e
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值