首页 > 试题广场 >

六人夜晚过桥,六人只有一只手电筒,桥每次最多可以通过两人,六

[单选题]
六人夜晚过桥,六人只有一只手电筒,桥每次最多可以通过两人,六人单独过桥的时间分别为3分钟,4分钟,5分钟,7分钟,8分钟,10分钟,则让全部人员过到桥的对岸最少需要(   )分钟。
  • 43
  • 45
  • 51
  • 52
第一次,3、4一起过桥,3回来送手电共花费3+4=7分钟第二次,8、10一起过桥,4回来送手电共花费10+4=14分钟第三次,3、7一起过桥,3回来送手电共花费7+3=10分钟第四次,3、5一起过桥,3回来送手电共花费5+3=8分钟第五次,3、4一起过桥,共4分钟合计7+14+10+8+4=43分钟
发表于 2021-08-16 21:18:25 回复(1)

这道题关键在于有两种方式进行搬运;
first1 , first2 , 5 , 7 , last2 , last1

first1 = 3;
first2 = 4;
last1 = 10;
last2 = 8;

第一种是:2人为搬运工
3、4一起过去;
3带回手电筒;
8、10一起过去;
4带回手电筒;
4 + 3 + 10 + 4 = 21;

第二种是:1人为搬运工
3、8一起过去;
3带回手电筒;
3、10一起过去;
3带回手电筒;
8 + 3 + 10 + 3 = 24;

只要判断哪个小就行了。

还有就是第一种方式中(5、7)(8、10)组合比
(5、10)(7、8)花的时间少,即不能乱序组合。

#include 
#include 
#include 
using namespace std;
int main() {
    int n;
    vector p;
    cin >> n;
    int temp;
    while (n--) {
        cin >> temp;
        p.push_back(temp);
    }
    sort(p.begin(), p.end());
    if (p.size() <= 2) {
        cout << p.back() << endl;
        return 0;
    }
    int first1 = p[0], first2 = p[1];
    int last1, last2;
    int count = 0;
    while (p.size() >= 4) {
        last1 = p.back();
        p.pop_back();
        last2 = p.back();
        p.pop_back();
        if (first1 + last1 + first2 * 2 < last1 + last2 + first1 * 2) {
            count += first1 + last1 + first2 * 2;
        }
        else {
            count += last1 + last2 + first1 * 2;
        }
    }
    if (p.size() == 3) {
        count += first1 + first2 + p[3];
    }
    else if (p.size() == 2) {
        count += first2;
    }
    cout << count << endl;
    system("pause");
}
// 输入
6
3 4 5 7 8 10
// 输出
43
编辑于 2021-08-06 20:55:36 回复(7)
不是46吗
发表于 2021-08-05 11:10:08 回复(1)
参考了4587号
  • 3、4过桥,3回来
  • 8,10过桥,4回来
  • 3、7过桥,3回来
  • 3、5过桥,3回来
  • 3、4过桥

发表于 2021-09-12 19:34:17 回复(0)
答案错了吧,第一步:10跟8一起走,然后3跑过去跑回来运手电,到岸8跟10,耗时16;第二步7跟5走,5回来,到岸7、8、10,耗时12;第三步5跟4走,4回来,到岸5、8、7、10,耗时9;第四步3跟4走,耗时4;总耗时 41
发表于 2022-04-20 10:44:45 回复(1)
题目不严谨,没有说过桥需要用手电筒啊,夜晚过桥一定要用手电筒?为什么你们的前提就是需要用手电筒过桥,题目又没说
发表于 2022-03-06 14:20:40 回复(0)
因为两人过河,一整套操作下来,m+n过河(m>n),搬运人在此岸;
首先单人搬运,m+3+n+3
双人搬运,4+3+m+4
所以只要n>5,双人搬运就是划算的;
如果是三人搬运,同理,计算就可
发表于 2022-09-24 10:01:25 回复(0)

热门推荐