QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
10天前
查看: 4985|回复: 40
收起左侧

[讨论] 3分钟内找出答案的人具有编程的潜力

[复制链接]
发表于 2006-12-19 17:40:37 | 显示全部楼层 |阅读模式 来自: 中国山东青岛

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
天黑,雨,四人欲过一座桥.桥破旧,每次最多能容两人同时通过.且只有一支手电(过桥必须用手电). 4 x/ f& ~1 J* H1 t% }

5 s4 }" n4 n% q# h甲单独过桥需1分钟,乙需2分钟,丙需5分钟,丁需7分钟. : o6 t/ m6 Z1 o4 T4 c
: ?, T1 J4 F  g0 E
则四人全部通过的最短时间是多少.
0 Q: A% [' T9 Z' q: B( g
' a, q8 J- S* d呵呵,试试看.
发表于 2006-12-19 19:46:14 | 显示全部楼层 来自: 中国安徽马鞍山
9分钟可以么??
发表于 2006-12-19 19:46:17 | 显示全部楼层 来自: 中国广东广州
8min
发表于 2006-12-19 19:48:05 | 显示全部楼层 来自: 中国安徽马鞍山
8分钟也能过啊?????我看要9分钟才行。楼上要告诉答案的话,请发信息给我,别告诉其他人啊!
$ ]0 J! |, W5 S
+ E: e0 ?8 _! z; p! K  J8 Y2 f[ 本帖最后由 江边 于 2006-12-20 09:08 编辑 ]
发表于 2006-12-20 08:20:21 | 显示全部楼层 来自: 中国山东烟台
1、2过桥,所用时间:2分钟。" t3 s# {% W5 a* ^0 f' z6 E

( B- ?/ M$ F  D* t* Q. @: d1回来,所用时间:1分钟。共用时间3分钟。
' E6 v& f* p6 _1 o' @+ J
( R+ f/ s8 H" a4 v  a& f, O' U5、7过桥,所用时间:7分钟。共用时间10分钟。
. ^9 W! J9 D# a) h8 t1 C$ G' ?3 e8 Z8 B) ?9 _1 w4 }" ~. _
2回来,所用时间:2分钟。共用时间:12分钟。3 H4 y& x: Y4 c* a
3 V" ?! l$ _) @  Z: P4 t4 [
1、2过桥,所用时间:2分钟。共用时间:14分钟。
发表于 2006-12-20 09:02:58 | 显示全部楼层 来自: 中国安徽马鞍山
厉害!不过我算的是9分钟,再试试。
发表于 2006-12-20 12:49:20 | 显示全部楼层 来自: 中国山东德州
俺也用14分钟,同5楼
) A$ I$ W. U& r
+ j1 B! U/ U! o. `1 @……看来,编程与俺无缘了。
& h4 F' E1 [3 h* L/ m: z7 w   \& c6 _7 m2 i( G# I! ^
难道是,甲乙过,乙拿手电,1分钟后,丁上桥,1分钟后,甲拿手电返回,再1分钟后,丙拿手电上桥,等丁过桥后(已8分钟,丙拿手电在桥头等一下)甲过桥。共9分钟。
  b' B) k! v7 T7 w0 e: }( d- r
6 P! `3 z  D$ k, O* I$ f[ 本帖最后由 lizy323 于 2006-12-20 13:06 编辑 ]
发表于 2006-12-20 18:32:30 | 显示全部楼层 来自: 中国辽宁鞍山
九分种是不可能的,丁至少过河一次,花7分种,就算其余四次都是1分种(不过这是不可能的),也需11分种,哪来的九分种一说。不会不负责任瞎说。也算是14分,不知还有没有更少的。
发表于 2006-12-20 19:16:27 | 显示全部楼层 来自: 中国广东广州
没人相信8MIN就可以啊!!!!!:Q
发表于 2006-12-21 00:21:34 | 显示全部楼层 来自: 中国山东德州
甲与丁过,丁拿手电,1分钟后,乙上桥,再2分钟后丙上桥,7分钟时丁在桥头等一分钟,与丙在第8分钟同时过桥。
- g5 ^' H2 L% t
+ d$ u0 q. u( X: q. _" T- g- J$ A果然8分钟呀!
发表于 2006-12-22 08:48:23 | 显示全部楼层 来自: 中国安徽马鞍山
八分钟有两个人赞成了,我的九分钟就没有人赞成么????) I. t! ~  u7 u  p* s' F
5 K' V3 y: A6 m6 P* v

7 |% x0 p" V0 ^1 d/ _) U+ Y6 l九楼啊!都没有人相信我九分钟!郁闷
发表于 2006-12-22 09:06:13 | 显示全部楼层 来自: 中国北京
我同意8分钟,也没说在同一边
2 b9 O! A! A4 _) d3 j9 {
/ |; w% q( O( s% {, F+ B[ 本帖最后由 helen000 于 2006-12-22 09:07 编辑 ]
 楼主| 发表于 2006-12-22 10:47:09 | 显示全部楼层 来自: 中国山东青岛
按照编程的思想,14分钟
( c' N  C2 x4 S2 ?5 T! c6 Z先让甲和乙过去,甲回去,丙和丁过去,乙回去,最后甲和乙过去。2+1+7+2+2=14分钟。8 f# L: L# I. n1 q- |
利用求图的最小生成树的算法,很容易解决
( J+ [" w3 P" R- a& {* I#include
6 a; N7 I1 b; G& ]3 b1 E#include
  j/ w) k1 y; l; @+ U& k: r+ z
8 d: ]* ?# \/ X6 F8 ^2 r- {6 }int a[4]={1,2,5,7}; //每人过河时间
) L! g8 W/ x& u* L0 N; Z( Mint mark[4]; //0左1右
! f3 d1 v5 r! {4 _: _4 {int mark1[100]; //状态控制,只有2^4*2=32种状态
$ L) S. E& E% T* u( ?int min;//最短时间5 B! W/ V; L6 |5 A

5 d( t- ^7 B) l. f9 l6 Xint test(int light) //返回状态值
/ ~  ?: c- ~5 U' g& X2 n6 ^' Q4 ~/ I{
$ R# g# h8 p4 D7 b2 e- d! ?# {2 Mint i,j;3 S2 W7 _0 t7 M! T( q0 M
j=0;0 Q% z+ ^; X# Q5 x: ]
for(i=0;i<4;i++): v" b  I5 ^5 h3 `$ X- T6 ?
{
# B) N$ f" s1 i3 h: P* a" Pj*=2;
5 P9 Y9 h% d* n" o# H& Z; Sj+=mark;" b- u. s: c6 K7 o1 ~
}5 `0 @2 C3 H% I) u$ s
j*=2;
. H' O' I, \( a) Ij+=light;
( \7 ]* E. G% l6 U/ b- Ireturn j;
! h- y/ r  X3 R1 w& \3 X7 s5 t3 S# A}% A* T, d1 ]5 J" q# Z

; L2 H0 g0 h2 Gint search(int time,int light) //搜索* {1 ]4 |3 \. t0 p# w
{$ e, g% G8 o. n+ z- [" M& x) B: [
int state;) w" ]8 F, W3 ?/ i+ R
int i,j,stime;" o, h7 c: B+ s0 p. l! J
/ V( j* L9 v/ I# O
state=test(light);
5 L* C- R$ L9 _5 O+ n1 \8 T0 F/ A2 Iif(state==31) //终态:人和手电都在右岸: S) t% [* J$ ~. {  ^8 n" n
{! p: N- b4 P9 J, X. r6 H( e5 r  e
if(time return 1;
% z+ n; q- h9 _/ w}6 X, Z; }. E# r
. l0 R$ r  X( `2 A9 I3 D
if(mark1[state]==1) return 0;
1 `3 Q$ Y) o1 v8 T0 |" O2 m3 M3 k+ O, b  X/ w& j
mark1[state]=1;
, F: M8 Z/ N% O1 v" G) b! F: s0 j; d! A6 o, T* M3 F5 K. R8 z
for(i=0;i<4;i++) //1人
  ~8 \0 X  T, ]; D4 G0 f) \{+ X: S7 K# U+ |( H5 N( Q
if(mark==light)
* m1 K' g8 B0 _" W4 V7 I{: k$ j3 e( g, F9 f
mark=!mark;: N7 ^- D# I' i; m! b- I4 \+ d6 ^
stime=a;
: e6 C0 k8 @7 ]& fsearch(time+stime,!light);
! N# L5 n6 q6 W' M8 S/ A8 a( nmark=!mark;
. D/ [& y6 O5 R! H) |9 m. s}
" D8 }$ C1 H9 o  o}1 C. _& F/ N! M/ d# K1 e% C$ v( u5 t
5 L% P' u0 T' v! g" K% B* Y
for(i=0;i<4;i++) //2人
9 _& u4 Y2 n0 R# x* P5 f{
5 S% E- j7 v$ o/ ?0 D( m& Fif(mark==light)% A4 r" P3 v* Z1 J" H/ g( d
{
0 L8 K/ K  x$ @* o7 R; n1 amark=!mark;
- t4 F1 M% |" x# T4 `0 ^+ y2 B' j; [% E3 k' m5 u* ^
for(j=i+1;j<4;j++)
" v8 l) O  h# c4 }{
" n  v  E; ]: b3 L0 J6 Kif(mark[j]==light)
: j" |3 S; B/ V9 Z% E# w{/ C, }  t$ w$ Q9 r
mark[j]=!mark[j];) o5 E4 w% ]) ]
stime=a[j]>a?a[j]:a;+ C' _. W5 k; u1 s( n8 ]+ f
+ K, c" k6 k8 K; A
search(time+stime,!light);
1 m6 P, K; y  _9 W3 |mark[j]=!mark[j];
# T" E' }, v6 \1 M" g# f# s}0 [4 j. n4 }9 o+ i/ I. b9 B
}! M, U( L) b: H5 D. t3 I/ {

. L3 o- c: Z; z3 o7 ^" p' mmark=!mark;
6 a. e5 k+ ^2 d, K4 F$ R}0 r% q# u9 ^0 U8 @7 A+ m+ i: D  k
}
9 G& z6 P% V6 M' Q' D* c! W/ v
% ^$ K& t3 ?" q5 n. b! W
7 _/ C1 Y: B1 I/ q( m$ N3 o7 _mark1[state]=0;
; R1 P, w1 G3 R. J7 Areturn 0;+ U, L  ?3 N6 Q% J& m9 [
}; Y0 |( K: ~: A/ ]) U% N
! _0 Y0 _8 p) m$ Y, c6 F( m
void main(): _. l! K7 {8 v3 Q+ z, M) C
{8 q8 W5 L- A1 Y5 N/ W6 s% w7 ]
memset(mark,0,sizeof(mark));
4 g; J- ^' |2 `+ G( @memset(mark1,0,sizeof(mark1));& p# y/ l2 u% S" c* F2 ?6 e: w5 b
& a3 ]/ C/ O, b
min=100;
3 E$ A- U$ z0 ~$ I( e
9 m, i) z  h8 i  Nsearch(0,0);* ]1 @) w# U: _( s% C; B$ Y( `
) n" D4 A. N+ L1 ?1 q! ?
printf("%d\n",min);
* Z: X$ h; F0 N2 ?7 o1 I0 T}
" j$ q( l. r; Z4 S5 F$ T结果是14分钟。% R5 }9 b' J; R# W4 ^
提供一个思路:让走的慢的两人同时过桥。
发表于 2006-12-22 11:25:38 | 显示全部楼层 来自: 中国安徽滁州
九分钟多一点可以!!方法如下:
$ R$ Q: d. D1 ]8 A4 }$ v甲、乙一起过,乙拿手电;甲过去时,乙到了桥中间,此时丙开始上桥;乙过去时,丙走过五分之一,此时乙把手电给甲,甲再上桥把手电给丙,来回一分钟不到;当甲重新到对面后,丁可以上桥了!!
发表于 2006-12-22 11:28:29 | 显示全部楼层 来自: 中国安徽滁州
刚才没注意看还是八分钟的对,哈哈,思路和我的一样,应该让甲丁先一起过!!!!
发表于 2006-12-22 12:18:19 | 显示全部楼层 来自: 中国上海
唉,2分钟嘛?甲乙一起过,上面背着丙丁
发表于 2006-12-22 13:14:56 | 显示全部楼层 来自: 中国浙江台州
我觉得应该是14分钟啊.
发表于 2006-12-22 13:30:05 | 显示全部楼层 来自: 中国广西南宁
标准答案:9分钟7 g$ E: T7 }: p
甲单独过桥需1分钟,乙需2分钟,丙需5分钟,丁需7分钟
; ]/ J% M8 W6 Q+ A9 n甲乙同过桥需2分钟,交电筒给在桥另一端的丙丁5 x8 X5 U4 K8 M! g
丙丁同过桥需7分钟,
4 h1 }+ S1 F( s; H, Z四人均过桥共需9分钟。
) n, e$ a$ A( t+ p" ^我在2分钟内找出答案。
 楼主| 发表于 2006-12-22 14:23:23 | 显示全部楼层 来自: 中国山东青岛
注意是必须用手电,而且要拿着手电照着才能国,不能给别人照着:time:
发表于 2006-12-24 13:34:35 | 显示全部楼层 来自: 中国山东烟台
白天再走的话,几分钟呢,如果打的要几分钟呢?
发表于 2006-12-26 16:00:21 | 显示全部楼层 来自: 中国辽宁鞍山
我一分钟内的答案是9分钟
发表于 2006-12-26 16:03:01 | 显示全部楼层 来自: 中国辽宁鞍山
不能给别人照着,那我可就有点琢磨不透了
发表于 2006-12-26 16:07:49 | 显示全部楼层 来自: 中国辽宁鞍山
你自己编的题吗?有漏洞啊!6 ]! i; @/ F8 E' Q
首先不把条件先讲清楚,后来才说不能给其它人照路.另外这四个人是都在桥的一侧还是桥两侧都有人,一共是四个人.
发表于 2006-12-26 17:34:16 | 显示全部楼层 来自: 中国广东汕头
应该是六分钟嘛,6 W+ o# l2 |4 K4 D: n! J7 ]
快的带上慢的,慢的有快的带路肯定变快拉,7 [% ^" `2 z1 t3 m9 c5 M
所以由甲来回带就行拉,最短时间应该是甲来回三次的时间和3 K' q$ t5 t  ~, y& i& x4 ?7 k
6分钟
发表于 2006-12-27 10:40:39 | 显示全部楼层 来自: 中国浙江台州
我的答案是16分钟:6 ?5 S7 r+ f8 s
因考虑只有一只手电,且一次只能通过2人,所以速度最快者带着。
1 l- [  w8 T) f7 U甲+丁=7
0 A; T  z4 K0 w, N: B$ q甲回=1
- K+ S6 R/ j' l; [甲+丙=5' `& T: T/ N' w
甲回=1
& k. ^0 }' a1 K甲+乙=21 H: ?: R) A& g$ r) O1 X# K+ J
所以等于16分。
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表