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