level 7
Cls
DefInt A-Z
s1$ = "ABCDEFGHIJKLMNOPQRST"
s2$ = " BC E G K M Q S "
l20 = Len(s1$)
Do
s3$ = s1$ + Left$(s1$, 1)
For i = 2 To 21
If InStr(s2$,Chr$(64+Abs(Asc(Mid$(s3$,i,1))-Asc(Mid$(s3$,i-1,1)))))=0 Then Exit For
Next
If i > 21 Then
For i = 1 To 20
Print Asc(Mid$(s3$, i, 1)) - 64;
Next
End
End If
Do
i = i - 1
l$ = Mid$(s1$, i, 1)
r$ = Mid$(s1$, i + 1, 1)
For j = i + 2 To l20
p$ = Mid$(s1$, j, 1)
For k = i + 1 To j - 1
If p$ < Mid$(a$, k, 1) Then
Mid$(s1$, k, j - k + 1) = p$ + Mid$(s1$, k)
Exit For
End If
Next
Next
For j = i + 1 To l20
p$ = Mid$(s1$, j, 1)
If p$ > r$ And InStr(s2$, Chr$(64 + Abs(Asc(p$) - Asc(l$)))) > 0 Then
Mid$(s1$, i + 1, j - i) = p$ + Mid$(s1$, i + 1)
Exit For
End If
Next
Loop While j > l20 And i > 1
Loop While i > 0
Print "无解"
2010年12月03日 09点12分
8
level 6
这是回溯吗?反正我没见过。给你一道题:
自然数的拆分。任何一个大于1的自然数可以拆分成若干个自然数之和。
如:
4=1+1+1+1
4=1+1+2
4=1+3
4=4
记得用回溯!
2010年12月03日 10点12分
10
level 5
解释运行太慢,上网本约20分钟,请编译后运行约6分钟
第2题
CLS
DIM s(28)
PRINT TIME$
FOR a = 1 TO 22
FOR b = a + 1 TO 23
FOR c = b + 1 TO 24
FOR d = c + 1 TO 25
FOR e = d + 1 TO 26
FOR f = e + 1 TO 27
FOR g = f + 1 TO 28
GOSUB bijiao
NEXT g, f, e, d, c, b, a
PRINT "NUM="; x
PRINT "over"
PRINT TIME$
END
bijiao:
n = 1
m(1) = a: m(2) = b: m(3) = c: m(4) = d: m(5) = e: m(6) = f: m(7) = g
FOR j = 7 TO 1 STEP -1
s(29 - m(j)) = 1
FOR k = j - 1 TO 1 STEP -1
s(m(j) - m(k)) = 1
NEXT k, j
s(a) = 1: s(b) = 1: s(c) = 1: s(d) = 1: s(e) = 1: s(f) = 1: s(g) = 1
FOR i = 1 TO 28
IF s(i) = 0 THEN n = 0: EXIT FOR
NEXT i
IF n <> 0 THEN PRINT a; b; c; d; e; f; g: x = x + 1
FOR i = 1 TO 28
s(i) = 0
NEXT i
RETURN
2010年12月17日 05点12分
12
level 5
今天把程序在qb4.5,qb7.1,FREEBASIC16位和32位下编译对比运行速度,结果让人吐血,系统是XPsp3,运行时间分别如下:
qb4.5 6分29秒
qb7.1 2分53秒
freebasic16位 11秒
freebasic32位 4秒
freebasic下编译:fbc *.bas -lang qb (*.bas为qb语言格式的源文件)
源文件:
'一根29CM长的尺子,只允许在上面刻7个刻度,要能用它量出1~29CM的各种长度。试问应怎样选择刻度?
CLS
DIM s(28),m(7)
PRINT TIME$
FOR a = 1 TO 22
FOR b = a + 1 TO 23
FOR c = b + 1 TO 24
FOR d = c + 1 TO 25
FOR e = d + 1 TO 26
FOR f = e + 1 TO 27
FOR g = f + 1 TO 28
n = 1
m(1) = a: m(2) = b: m(3) = c: m(4) = d: m(5) = e: m(6) = f: m(7) = g
FOR j = 7 TO 1 STEP -1
s(29 - m(j)) = 1
FOR k = j - 1 TO 1 STEP -1
s(m(j) - m(k)) = 1
NEXT k, j
s(a) = 1: s(b) = 1: s(c) = 1: s(d) = 1: s(e) = 1: s(f) = 1: s(g) = 1
FOR i = 1 TO 28
IF s(i) = 0 THEN n = 0: EXIT FOR
NEXT i
IF n <> 0 THEN PRINT a; b; c; d; e; f; g: x = x + 1
FOR i = 1 TO 28
s(i) = 0
NEXT i
NEXT g, f, e, d, c, b, a
PRINT "NUM="; x
PRINT "over"
PRINT TIME$
END
2010年12月21日 20点12分
13
level 1
跟本不用写程序
第一题,前一段全是奇数,后一段全是偶数就OK
1,3,5,7,...,19,2,4,6,...20
或者
2,4,6,...20,1,3,5,...,19
第二题,一个刻度就足够,就是1
2010年12月24日 14点12分
14
level 7
楼上的
你直接弄1
不行
要求量1~29cm的所有长度
都最多量两次。。。。
2010年12月29日 02点12分
15
level 5
是一次量出,就不要搞什么最多量两次了,附上运行结果:
1 2 14 18 21 24 27
1 3 6 13 20 24 28
1 4 10 16 22 24 27
1 5 9 16 23 26 28
2 5 7 13 19 25 28
2 5 8 11 15 27 28
NUM= 6
2010年12月30日 16点12分
16
level 7
额- - 我刚看到我以前发的贴
表示我以前弱爆了,这题目用深搜回溯神马的都行,不难- -所以..
2011年08月20日 09点08分
18