Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- a = all numbers added together
- b = number of groups
- m = a/b (value is mean)
- c = array(a)DES (add all numbers to an array in decending order)
- foreach c
- if((m-(c[0] + c[1])) < (m-(c[0]))
- if((m-(c[0] + c[1] + c[2])) < (m-(c[0] + c[1])))
- else
- g1 = c[0],c[1]
- c = c - (c[0],c[1])
- else
- g1 = c[0]
- c = c - c[0]
- foreach c
- if((m-(c[0] + c[1])) < (m-(c[0]))
- else
- g2 = c[0]
- var A = [1,2,3,4,5,6,7,8,9,10];
- var G = 3;
- function find(line, groups) {
- var length = line.length;
- var mean = line.sum() / groups;
- var temp = [0];
- var bestsad = 4294967295;
- var beststarts = [];
- var dynamic = "var x0 = 0; ";
- for(var i=1; i<groups; i++) {
- dynamic += "for(var x" + i + "=x" + (i-1) + "+1;x" + i + "<" + length + ";x" + i + "++) ";
- temp.push("x" + i);
- }
- dynamic += "{ var sad = getSAD(line, mean, [" + temp.join(",") + "]);";
- dynamic += "if(sad < bestsad) { bestsad = sad; beststarts = [" + temp.join(",") + "] ;} }"
- eval(dynamic);
- console.log("Best SAD " + bestsad);
- console.log("Best Start Indexes " + beststarts);
- return beststarts;
- }
- function getSAD(line, mean, starts) {
- var sums = [];
- var sad;
- for(var i = 0; i < starts.length-1; i++)
- {
- var idx = i;
- sums.push(line.slice(starts[idx], starts[i+1]).sum());
- }
- sums.push(line.slice(starts[starts.length-1]).sum());
- sad = sums.sad(mean);
- return sad;
- }
- Array.prototype.sum = function() {
- var result = 0;
- for(var i=0; i<this.length; i++)
- result += this[i];
- return result;
- }
- Array.prototype.sad = function(mean) {
- var result = 0;
- for(var i=0; i<this.length; i++)
- result += Math.abs(this[i] - mean);
- return result;
- }
- find(A, G);
- var x0 = 0;
- for(var x1=x0+1;x1<10;x1++)
- for(var x2=x1+1;x2<10;x2++) {
- var sad = getSAD(line, mean, [0,x1,x2]);
- if(sad < bestsad) {
- bestsad = sad;
- beststarts = [0,x1,x2] ;
- }
- }
- (1),(2..10)
- (1..2) (3..10)
- (1..3) (4..10)
- (1..4) (5..10)
- (1..5) (6..10)
- (1..6) (7..10)
- (1..7) (8..10)
- (1..8) (9..10)
- (1..9) (10)
- (1),(1..2),(1..3) ,(1..4) ,(1..5),(1..6) ,(1..7) ,(1..8)
- (1) -> 8 combinations
- (1..2) -> 7 combinations
- (1..3) -> 6 combinations
- (1..4) -> 5 combinations
- (1..5) -> 4 combinations
- (1..6) -> 3 combinations
- (1..7) -> 2 combinations
- (1..8) -> 1 combinations
- #include<iostream>
- #include<stdio.h>
- #include <algorithm>
- using namespace std;
- int maximum(int x, int y, int z) {
- int max = x; /* assume x is the largest */
- if (y > max) { /* if y is larger than max, assign y to max */
- max = y;
- } /* end if */
- if (z > max) { /* if z is larger than max, assign z to max */
- max = z;
- } /* end if */
- return max; /* max is the largest value */
- }
- int main()
- {
- int array[] = {1 ,2, 3, 4, 5, 6, 7, 8, 9, 10};
- int size = sizeof(array)/sizeof(array[0]);
- int part1=0;
- int part2=0;
- int part3=0;
- sort(array,array+size,greater<int>());
- for(int x=0;x<size;x++)
- {
- if( part1 < part2 && part1 < part3)
- {
- part1 +=array[x];
- }else if(part2 < part3){
- part2 +=array[x];
- }else{
- part3 +=array[x];
- }
- }
- printf("first part1 = %dn",part1 );
- printf("first part2 = %dn",part2 );
- printf("first part3 = %dn",part3 );
- printf("-------------------------------n");
- printf("largest number = %dn",maximum(part1,part2,part3));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement