RosettaCodeData/Task/Greatest-subsequential-sum/Liberty-BASIC/greatest-subsequential-sum....

53 lines
1.1 KiB
Plaintext

'Greatest_subsequential_sum
N= 20 'number of elements
randomize 0.52
for K = 1 to 5
a$ = using("##",int(rnd(1)*12)-5)
for i=2 to N
a$ = a$ +","+using("##",int(rnd(1)*12)-5)
next
call maxsumseq a$
next K
sub maxsumseq a$
sum=0
maxsum=0
sumStart=1
end1 =0
start1 =1
token$="*"
i=0
while 1
i=i+1
token$=word$(a$, i, ",")
if token$ ="" then exit while 'end of stream
x=val(token$)
sum=sum+x
if maxsum<sum then
maxsum = sum
start1 = sumStart
end1 = i
else
if sum <0 then
sum=0
sumStart = i+1
end if
end if
wend
print "sequence: ";a$
print " ";
for i=1 to start1-1: print " "; :next
for i= start1 to end1: print "---"; :next
print
if end1 >0 then
print "Maximum sum subsequense: ";start1 ;" to "; end1
else
print "Maximum sum subsequense: is empty"
end if
print "Maximum sum ";maxsum
print
end sub