回 帖 发 新 帖 刷新版面

主题:求三色珠问题!很难的哦~

[em11]

先还是看题目:
一串项链有m颗兰色、白色和金色的三种组成,分别用p1,p2,p3,p4....pm表示一串首尾相连的珍珠。求颜色相同的连续的最长珍珠串的各颗位置。

各位高手,有谁会的话就给小弟写写出来。小弟实在学的不好编不出来~!!!请大家尽快回哦~谢谢拉!

回复列表 (共4个回复)

沙发

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;"个"

板凳

moz,这个兰色,白色,金色,不是应该用键盘自己输入的吗?

3 楼

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 楼

谢谢喽~~我去调试一下1[em2]

我来回复

您尚未登录,请登录后再回复。点此登录或注册