趣味程序设计_过桥问题(C语言)

这是一个关于解决N个人过桥问题的编程挑战,目标是找到使用一个手电筒使得所有人过桥的最短时间。程序设计包括输入人数及过桥时间,输出最短时间。解题策略涉及两种模式,根据具体情况选择。在实现过程中遇到了递归条件错误,通过调整为N-1解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


题目描述:

过桥问题。有N(N≥2)个人在晚上需要从X地到达Y地,中间要过一座桥,过桥需要手电筒(而他们只有1个手电筒),每次最多两个人一起过桥(否则桥会垮)。N个人的过桥时间依次存入数组t[N]中,分别为:t[0],
t[1], ……, t[N-1]。过桥的速度以慢的人为准!注意:手电筒不能丢过桥!问题是:编程求这N个人过桥所花的最短时间。



输入:

有多组测试数据,

每组数据先输入一个人数N,然后输入这N个人过桥所花的时间。



输出:

输出对应的最短时间。



样例输入 :

4 1 2 5 10
4 5 2 10 1



样例输出:

17
17



源代码:

#include <stdio.h>
#include <stdlib.h>
void paixun(int time[],int N);//冒泡排序对时间排序
int guoqiao(int time[],int N);//当2*T次快>=T最快+T次慢时,T最慢+T最快+T次慢+T最快//当2*Tck<Tzk+Tcm时,Tck+Tzk+Tzm+Tck
int main()
{
   
   
    int N;
    int time[100];
    int zong;//总时间
    while(scanf("%d",&N)!=EOF)
    {
   
   
        for(int i=0; i<N; i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值