langs a-z
This commit is contained in:
parent
db842d013d
commit
d066446780
11389 changed files with 98361 additions and 1020 deletions
|
|
@ -0,0 +1,47 @@
|
|||
$ include "seed7_05.s7i";
|
||||
|
||||
const func array integer: maxSubseq (in array integer: sequence) is func
|
||||
result
|
||||
var array integer: maxSequence is 0 times 0;
|
||||
local
|
||||
var integer: number is 0;
|
||||
var integer: index is 0;
|
||||
var integer: currentSum is 0;
|
||||
var integer: currentStart is 1;
|
||||
var integer: maxSum is 0;
|
||||
var integer: startPos is 0;
|
||||
var integer: endPos is 0;
|
||||
begin
|
||||
for number key index range sequence do
|
||||
currentSum +:= number;
|
||||
if currentSum < 0 then
|
||||
currentStart := succ(index);
|
||||
currentSum := 0;
|
||||
elsif currentSum > maxSum then
|
||||
maxSum := currentSum;
|
||||
startPos := currentStart;
|
||||
endPos := index;
|
||||
end if;
|
||||
end for;
|
||||
if startPos <= endPos and startPos >= 1 and endPos >= 1 then
|
||||
maxSequence := sequence[startPos .. endPos];
|
||||
end if;
|
||||
end func;
|
||||
|
||||
const proc: main is func
|
||||
local
|
||||
const array integer: a1 is [] (-1, -2, 3, 5, 6, -2, -1, 4, -4, 2, -1);
|
||||
const array integer: a2 is [] (-1, -2, -3, -5, -6, -2, -1, -4, -4, -2, -1);
|
||||
var integer: number is 0;
|
||||
begin
|
||||
write("Maximal subsequence:");
|
||||
for number range maxSubseq(a1) do
|
||||
write(" " <& number);
|
||||
end for;
|
||||
writeln;
|
||||
write("Maximal subsequence:");
|
||||
for number range maxSubseq(a2) do
|
||||
write(" " <& number);
|
||||
end for;
|
||||
writeln;
|
||||
end func;
|
||||
Loading…
Add table
Add a link
Reference in a new issue