超级超级超级超级超级超级难题!谁会?
qbasic吧
全部回复
仅看楼主
level 7
JI疾风 楼主
1.有那么一题(真的有!!):1-20排成圈,使每一个数前后差都是素数(及质数)。格式:横着打,第一个和最后一个的差是素数。
2.一根29CM长的尺子,只允许在上面刻7个刻度,要能用它量出1~29CM的各种长度。试问应怎样选择刻度?
啊啊啊啊啊啊啊啊啊啊啊啊啊!太难太难了![钱]
2010年11月09日 13点11分 1
level 6
楼主,可以用回溯法。
2010年11月10日 11点11分 2
level 7
JI疾风 楼主
哪一题?
2010年11月10日 13点11分 3
level 6
第一题,难道你不会回溯
2010年11月29日 12点11分 4
level 7
JI疾风 楼主
你是蜀山小学的吗?
2010年11月29日 13点11分 5
level 6
不是,你是哪所小学的?
2010年11月30日 14点11分 6
level 7
JI疾风 楼主
我是青年路小学的。你不是蜀山小学的?
2010年12月01日 13点12分 7
level 7
JI疾风 楼主
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 7
JI疾风 楼主
此乃第一题也。
2010年12月03日 09点12分 9
level 6
这是回溯吗?反正我没见过。给你一道题:
自然数的拆分。任何一个大于1的自然数可以拆分成若干个自然数之和。
如:
4=1+1+1+1
4=1+1+2
4=1+3
4=4
记得用回溯!
2010年12月03日 10点12分 10
level 7
JI疾风 楼主
你QQ多少?
2010年12月03日 12点12分 11
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
JI疾风 楼主
楼上的
你直接弄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年07月12日 06点07分 17
level 7
JI疾风 楼主
额- - 我刚看到我以前发的贴
表示我以前弱爆了,这题目用深搜回溯神马的都行,不难- -所以..
2011年08月20日 09点08分 18
1