Greatest subsequential sum: Difference between revisions
Content added Content deleted
(Added FreeBASIC) |
(added kotlin) |
||
Line 1,518: | Line 1,518: | ||
<pre>[3,5,6,-2,-1,4] |
<pre>[3,5,6,-2,-1,4] |
||
15</pre> |
15</pre> |
||
=={{header|Kotlin}}== |
|||
<lang scala>// version 1.0.6 |
|||
fun gss(seq: IntArray): Triple<Int, Int, Int> { |
|||
if (seq.size == 0) throw IllegalArgumentException("Array cannot be empty") |
|||
var sum: Int |
|||
var maxSum = seq[0] |
|||
var first = 0 |
|||
var last = 0 |
|||
for (i in 1 until seq.size) { |
|||
sum = 0 |
|||
for (j in i until seq.size) { |
|||
sum += seq[j] |
|||
if (sum > maxSum) { |
|||
maxSum = sum |
|||
first = i |
|||
last = j |
|||
} |
|||
} |
|||
} |
|||
return Triple(maxSum, first, last) |
|||
} |
|||
fun main(args: Array<String>) { |
|||
val seq = intArrayOf(-1 , -2 , 3 , 5 , 6 , -2 , -1 , 4 , -4 , 2 , -1) |
|||
val(maxSum, first, last) = gss(seq) |
|||
if (maxSum > 0) { |
|||
println("Maximum subsequence is from indices $first to $last") |
|||
print("Elements are : ") |
|||
for (i in first .. last) print("${seq[i]} ") |
|||
println("\nSum is $maxSum") |
|||
} |
|||
else |
|||
println("Maximum subsequence is the empty sequence which has a sum of 0") |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
Maximum subsequence is from indices 2 to 7 |
|||
Elements are : 3 5 6 -2 -1 4 |
|||
Sum is 15 |
|||
</pre> |
|||
=={{header|Liberty BASIC}}== |
=={{header|Liberty BASIC}}== |