| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6645 人关注过本帖
标题:过桥问题..
取消只看楼主 加入收藏
maxam0128
Rank: 2
等 级:论坛游民
帖 子:37
专家分:10
注 册:2011-10-9
结帖率:75%
收藏
 问题点数:0 回复次数:5 
过桥问题..
漆黑的夜里,n位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,他们一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,每人所需要的时间分别是a1、a2、...an分钟;而如果两人同时过桥,所需要的时间就是走得比较慢的那个人单独行动时所需的时间。问题是,如何设计一个方案,让这些人尽快过桥。
#include<stdio.h>
int main()
{
    int n,a[100],i,m=0,s,j,t;
    while(scanf("%d",&n)!=0)
    {
        s=0;
        for(i=0;i<n;i++)
        scanf("%d",&a[i]);
        for(i=0;i<n;i++)
        {
            for(j=1+i;j<n;j++)
            if(a[j]<a[i])
            {
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
        }
        if(n%2==0)
        {for(i=n-1;i>=1;i=i-2)
        s=s+a[i];
        s=s+(n-2)*a[1]+a[0]*(n-2)/2;
        printf("%d\n",s);}
        else
        {for(i=n-1;i>=0;i=i-2) s=s+a[i];
        
        s=s+(n-3)*a[1]+a[0]*(n-3)/2+a[1];
        printf("%d\n",s);}   
    }
    return(0);
}
搜索更多相关主题的帖子: 手电筒 护栏 include 旅行者 而且 
2011-11-08 09:20
maxam0128
Rank: 2
等 级:论坛游民
帖 子:37
专家分:10
注 册:2011-10-9
收藏
得分:0 
回复 2楼 luchar
你的算法明显不对,不信你可以测试一下你的算法和我的算法用的总时间...
2011-11-08 10:06
maxam0128
Rank: 2
等 级:论坛游民
帖 子:37
专家分:10
注 册:2011-10-9
收藏
得分:0 
回复 4楼 laoyang103
我的时间是6,我是这样想得,先把n个人从小到大进行排序,然后,a0,a1过去,a0回来,然后an-1,an-2过去,a1回来,接下来依次类推...
2011-11-08 14:03
maxam0128
Rank: 2
等 级:论坛游民
帖 子:37
专家分:10
注 册:2011-10-9
收藏
得分:0 
回复 6楼 yuccn
你的数字和我的题目的例子是一样的说,他是这样算的,3+1+12+3+3+1+6=29,我的算法跟这差不多...
2011-11-08 14:07
maxam0128
Rank: 2
等 级:论坛游民
帖 子:37
专家分:10
注 册:2011-10-9
收藏
得分:0 
回复 12楼 laoyang103
交上去总是超时,我就不知道哪里还有问题...
2011-11-08 20:54
maxam0128
Rank: 2
等 级:论坛游民
帖 子:37
专家分:10
注 册:2011-10-9
收藏
得分:0 
回复 15楼 『点点滴滴』
尴尬,我表示c++没学过..
2011-11-09 10:40
快速回复:过桥问题..
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018453 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved