主题:求三色珠问题!很难的哦~
cockyboy
[专家分:0] 发布于 2005-08-19 16:26:00
[em11]
先还是看题目:
一串项链有m颗兰色、白色和金色的三种组成,分别用p1,p2,p3,p4....pm表示一串首尾相连的珍珠。求颜色相同的连续的最长珍珠串的各颗位置。
各位高手,有谁会的话就给小弟写写出来。小弟实在学的不好编不出来~!!!请大家尽快回哦~谢谢拉!
回复列表 (共4个回复)
沙发
moz [专家分:37620] 发布于 2005-08-19 11:44:00
m= ???
dim p(m)
对 p(m) 赋值 1 为兰色, 2 为白色, 3 为金色
i=1
do
if k<>p(i) then
if L > L0 then
La=L
Lbegin=Lb
Lend=i
LS=k
endif
k=p(i)
L=1
Lb=i
if sexit=1 then sexit=2
else
L=L+1
if L>=m then
La=m
Lbegin=1
Lend=m
LS=p(1)
exit do
endif
endif
i=i+1
if i>m then
i=i-m
sexit=1
endif
loop until sexit=2
print "最长的一串有";La;"个";mid$(" 兰白金",LS*2,2);"色的珠子"
print "从第";Lbegin;"个开始到第";Lend;"个"
板凳
莹萍 [专家分:130] 发布于 2005-08-19 14:56:00
moz,这个兰色,白色,金色,不是应该用键盘自己输入的吗?
3 楼
莹萍 [专家分:130] 发布于 2005-08-19 14:57:00
CLS
INPUT "m="; m
DIM a(m + 1), b(m)
FOR i = 1 TO m
INPUT "a="; a(i)
NEXT i
n = 1
FOR i = 1 TO m
IF a(i) = a(i + 1) THEN
n = n + 1
ELSE
IF s < n THEN s = n: x = i
k = k + 1: b(k) = n: n = 1
END IF
NEXT i
IF a(1) = a(m) THEN p = b(1) + b(k)
IF s < p THEN
s = p
FOR j = b(k) TO 1 STEP -1: PRINT m - j + 1; : NEXT j
FOR j = 1 TO b(1): PRINT j; : NEXT j
ELSE
FOR j = s TO 1 STEP -1: PRINT x - j + 1; : NEXT j
END IF
PRINT : PRINT "s="; s
END
4 楼
cockyboy [专家分:0] 发布于 2005-08-19 16:28:00
谢谢喽~~我去调试一下1[em2]
我来回复