- 注册时间
- 2004-10-30
- 最后登录
- 1970-1-1
|
发表于 2005-5-8 14:53:00
|
显示全部楼层
附源文件
0 OKE 1024,0
15 TP%=1:INPUT "塔的层数:";I:IF I<1 15 THEN CLS :15
18 DIM N%(I),P%(I),Q%(I),R%(I),H%(2):N%(1)=I:GRAPH
20 FOR I=0 TO 2 INE 30+I*50,0,30+I*50,N%(1)*5+5:NEXT INE 2,N%(1)*5+5,158,N%(1)*5+5
25 FOR I=1 TO N%(1):BOX 30-I*2,I*5,30+I*2,I*5+3,1,2:NEXT
30 HP%(0)=0:HP%(1)=N%(1):HP%(2)=N%(1)
40 P%(1)=0
50 Q%(1)=1
60 R%(1)=2
70 IF (TP%=1)AND (N%(TP%)=1)GOTO 170
80 WHILE N%(TP%)>1
90 N%(TP%+1)=N%(TP%)-1 %(TP%+1)=P%(TP%) %(TP%+1)=R%(TP%):R%(TP%+1)=Q%(TP%):TP%=TP%+1
100 WEND
110 GOSUB 210
120 IF TP%<=1 GOTO 160
130 TP%=TP%-1
140 GOSUB 210
150 N%(TP%)=N%(TP%)-1:SWAP P%(TP%),Q%(TP%)
160 GOTO 70
170 N%(TP%)=1:GOSUB 210
180 TP%=TP%-1
190 BEEP :BEEP : INKEY$ :BOX 0,0,60,80,1,0
200 PRINT " 完成!"," 移动"," ";TIME," 次"
202 BOX 0,0,60,70,1,2
205 BOX 2,1,63,73,1,2:A$= INKEY$ :CLS
206 PRINT "最少移动2^N-1次,N为盘子只数;可以归纳证明","TIME(N)=2TIME(N-1)+1","而TIME(1)=1…"
207 PRINT "呵呵";:A$= INKEY$ :CLS
208 PRINT "30只呢?"," 2^30-1=",2^30-1,"够你玩一辈子了";:END
209 **************************************DRAW THE TOWER ************************************
210 S%=P%(TP%)
220 D%=R%(TP%):HP%(S%)=HP%(S%)+1
240 BOX S%*50+30-N%(TP%)*2,HP%(S%)*5,S%*50+30+N%(TP%)*2,HP%(S%)*5+3,1,2
250 BOX D%*50+30-N%(TP%)*2,HP%(D%)*5,D%*50+30+N%(TP%)*2,HP%(D%)*5+3,1,2
260 HP%(D%)=HP%(D%)-1:TIME=TIME+1
270 RETURN
|
|