September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
|
|
@ -1,25 +1,25 @@
|
|||
function MaximumSubsequence( population ) {
|
||||
var maxValue = 0;
|
||||
var subsequence = [];
|
||||
|
||||
for( var i=0, len=population.length; i < len; i++ ) {
|
||||
for( var j=i; j <= len; j++ ) {
|
||||
var subsequence = population.slice(i,j);
|
||||
var value = sumValues(subsequence);
|
||||
if( value > maxValue ) {
|
||||
maxValue = value;
|
||||
greatest = subsequence;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return greatest;
|
||||
function MaximumSubsequence(population) {
|
||||
var maxValue = 0;
|
||||
var subsequence = [];
|
||||
|
||||
for (var i = 0, len = population.length; i < len; i++) {
|
||||
for (var j = i; j <= len; j++) {
|
||||
var subsequence = population.slice(i, j);
|
||||
var value = sumValues(subsequence);
|
||||
if (value > maxValue) {
|
||||
maxValue = value;
|
||||
greatest = subsequence;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return greatest;
|
||||
}
|
||||
|
||||
function sumValues(arr) {
|
||||
var result = 0;
|
||||
for( var i=0, len=arr.length; i < len; i++) {
|
||||
result += arr[i];
|
||||
}
|
||||
return result;
|
||||
var result = 0;
|
||||
for (var i = 0, len = arr.length; i < len; i++) {
|
||||
result += arr[i];
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
// version 1.1
|
||||
|
||||
fun gss(seq: IntArray): Triple<Int, Int, Int> {
|
||||
if (seq.isEmpty()) 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")
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
sub maxsubseq (*@a) {
|
||||
sub max-subseq (*@a) {
|
||||
my ($start, $end, $sum, $maxsum) = -1, -1, 0, 0;
|
||||
for @a.kv -> $i, $x {
|
||||
$sum += $x;
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
sub max_sub-seq ( *@a ) {
|
||||
sub max-subseq ( *@a ) {
|
||||
|
||||
my $max_subset = [];
|
||||
my $max-subset = ();
|
||||
while @a {
|
||||
my @subsets = @a.keys.map: { [ @a[0..$_] ] };
|
||||
@subsets.push($max_subset);
|
||||
$max_subset = @subsets.max: { [+] .list };
|
||||
my @subsets = [\,] @a;
|
||||
@subsets.push: $max-subset;
|
||||
$max-subset = @subsets.max: { [+] .list };
|
||||
@a.shift;
|
||||
}
|
||||
|
||||
return $max_subset;
|
||||
return $max-subset;
|
||||
}
|
||||
|
||||
max_sub-seq( -1, -2, 3, 5, 6, -2, -1, 4, -4, 2, -1 ).perl.say;
|
||||
max_sub-seq( -2, -2, -1, 3, 5, 6, -1, 4, -4, 2, -1 ).perl.say;
|
||||
max_sub-seq( -2, -2, -1, -3, -5, -6, -1, -4, -4, -2, -1 ).perl.say;
|
||||
max-subseq( -1, -2, 3, 5, 6, -2, -1, 4, -4, 2, -1 ).say;
|
||||
max-subseq( -2, -2, -1, 3, 5, 6, -1, 4, -4, 2, -1 ).say;
|
||||
max-subseq( -2, -2, -1, -3, -5, -6, -1, -4, -4, -2, -1 ).say;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
fcn maxsubseq(s){
|
||||
s.reduce(fcn([(sum, seq, maxsum, maxseq)], x){
|
||||
sum=sum+x; seq=T(x).extend(seq);
|
||||
if(sum < 0) return(0,T,maxsum,maxseq);
|
||||
if (sum>maxsum) return(sum, seq, sum, seq);
|
||||
return(sum, seq, maxsum, maxseq);
|
||||
},
|
||||
T(0,T,0,T))[3].reverse(); // -->maxseq.reverse()
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
s:=maxsubseq(T(-1,-2,3,5,6,-2,-1,4,-4,2,-1));
|
||||
println(s.sum()," : ",s);
|
||||
|
||||
s:=maxsubseq(T(-1,-2)); println(s.sum()," : ",s);
|
||||
|
||||
s:=maxsubseq(T); println(s.sum()," : ",s);
|
||||
Loading…
Add table
Add a link
Reference in a new issue