一道智力题(转)

天黑,雨,四人欲过一座桥.桥破旧,每次最多能容两人同时通过.且只有一支手电(过桥必须用手电).甲单独过桥需1分钟,乙需2分钟,丙需5分钟,丁需7分钟.则四人全部通过的最短... 天黑,雨,四人欲过一座桥.桥破旧,每次最多能容两人同时通过.且只有一支手电(过桥必须用手电).

甲单独过桥需1分钟,乙需2分钟,丙需5分钟,丁需7分钟.

则四人全部通过的最短时间是多少.

呵呵,试试看.
展开
 我来答
百度网友b46367c44
2006-02-10 · TA获得超过2248个赞
知道小有建树答主
回答量:1620
采纳率:100%
帮助的人:695万
展开全部
7+1+5+1+2=16
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风行侠
2006-02-10 · TA获得超过454个赞
知道小有建树答主
回答量:272
采纳率:0%
帮助的人:108万
展开全部
16分钟
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yeehan
2006-02-10 · TA获得超过1.1万个赞
知道小有建树答主
回答量:1469
采纳率:0%
帮助的人:1469万
展开全部
无赖算法:
甲乙二人执手电过桥,
不回,径自去睡大觉;
丙丁二人期盼无望,乃互击对方双眼,产生眼冒金星以助过桥。合计9分钟。

马加爵算法:
丁、丙、乙、甲四人按先后排列,各操一锤,齐向前者锤去,最后剩下甲,
甲找长绳一根,长度等于桥长,前端节点捆丁、丙、乙其中一人,后端节点捆余下二者,拖行过桥。
锤人及捆人时间忽略不计,合计2分钟。

哈哈,玩笑,其实可以通过程序来实现:

#include
#include

int a[4]={1,2,5,7}; //每人过河时间
int mark[4]; //0左1右
int mark1[100]; //状态控制,只有2^4*2=32种状态
int min;//最短时间

int test(int light) //返回状态值
{
int i,j;
j=0;
for(i=0;i<4;i++)
{
j*=2;
j+=mark;
}
j*=2;
j+=light;
return j;
}

int search(int time,int light) //搜索
{
int state;
int i,j,stime;

state=test(light);
if(state==31) //终态:人和手电都在右岸
{
if(time return 1;
}

if(mark1[state]==1) return 0;

mark1[state]=1;

for(i=0;i<4;i++) //1人
{
if(mark==light)
{
mark=!mark;
stime=a;
search(time+stime,!light);
mark=!mark;
}
}

for(i=0;i<4;i++) //2人
{
if(mark==light)
{
mark=!mark;

for(j=i+1;j<4;j++)
{
if(mark[j]==light)
{
mark[j]=!mark[j];
stime=a[j]>a?a[j]:a;

search(time+stime,!light);
mark[j]=!mark[j];
}
}

mark=!mark;
}
}

mark1[state]=0;
return 0;
}

void main()
{
memset(mark,0,sizeof(mark));
memset(mark1,0,sizeof(mark1));

min=100;

search(0,0);

printf("%d\n",min);
}

答案是:

甲+乙=2

甲回=1(2+1=3)

丙+丁=7(3+7=10)

乙回=2(10+2=12)

甲+乙=2(12+2=14)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
音翅
2006-02-10 · 超过60用户采纳过TA的回答
知道小有建树答主
回答量:247
采纳率:0%
帮助的人:157万
展开全部
15分钟
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式