Programming Questions
function ArrayAdditionI(arr) { arr = arr.sort(function(a,b){return a-b;}); var largestval = arr.pop(); var sum = arr.reduce(function(x,y){return x +y;}); for (var i = arr.length-1; i>=0; i--){ if (sum-arr[i]==largestval){ return true; } if (largestval-sum == 0){ return true; } } return false; } // keep this function call here // to see how to enter arguments in JavaScript scroll down ArrayAdditionI(readline());
drewprice
answered on 09/21/14
function ArrayAdditionI(arr) { // sort array ascending arr = arr.sort( function(a,b){return a - b}); var max = arr.pop(); function lookForSolution(){ function search(sum,i) { if ( sum == max ) { return true; } else if ( sum > max || i == arr.length ) { return null; } else { return search(sum + arr[i],i + 1) || search(sum,i + 1); } } // start search with sum of zero in position zero: return search(0,0); } return lookForSolution() || false; } // keep this function call here // to see how to enter arguments in JavaScript scroll down ArrayAdditionI(readline());It works by stepping through the array one by one, and tries both adding the current value & skipping it, exploring each possibility. It stops when it finds a working solution, otherwise returns false. Hope this helps! :-)
dsernst
answered on 09/24/14
kimeshan
answered on 09/21/14
WonderButt
answered on 09/21/14
kimeshan
answered on 09/22/14
def ArrayAdditionI(arr): arr.sort() mem = dict() def check_sum(n, sum): if n == 0: return 'false' if n == 1: return arr[0] == sum if (n, sum) in mem.keys(): return mem[(n, sum)] else: f = check_sum(n - 1, sum) or check_sum(n - 1, sum - arr[n-1]) mem[(n, sum)] = f return f return check_sum(len(arr) - 1, arr[-1])
louw49
answered on 05/22/18
function ArrayAdditionI(arr) { let subtotal = 0; let isSum = false; let total = arr.sort(function(a,b){return (a > b)}).pop(); let newarr = arr let power2 = Math.pow(2,newarr.length); let returnarr = []; for (let i=1;i<power2;i++){ subtotal=0; for (let j=0;j<newarr.length;j++){ Math.pow(2,j) & i ? subtotal += newarr[j] : ""; } if (subtotal == total){isSum = true} } return isSum; } // keep this function call here ArrayAdditionI(readline());
pastirk
answered on 11/17/17
static String ArrayAdditionI(int[] A) { Arrays.sort(A); int n = A.length; int target = A[n-1]; int MAX = A[0] >= 0 ? target + 1 : target + 1 + Math.abs(A[0]); int ZERO = A[0] >= 0 ? 0 : -A[0]; boolean[][] D = new boolean[n][MAX]; D[0][0] = true; for(int i=0; i<n; i++) D[i][0] = true; D[0][ZERO] = true; for(int i=0; i<n; i++) D[i][ZERO] = true; for(int i=1; i<=n-1; i++) { if(A[i-1] >= 0) { for(int j=1; j<=MAX-1; j++) { D[i][j] = D[i-1][j]; if(j-A[i-1] >= 0) { D[i][j] |= D[i-1][j-A[i-1]]; } } } else { for(int j=MAX-1+A[i-1]; j>=1; j--) { D[i][j] = D[i-1][j]; if(j-A[i-1] >= 0) { D[i][j] |= D[i-1][j-A[i-1]]; } } } } return D[n-1][MAX-1] ? "true" : "false"; }
binfeng
answered on 06/24/15