JSFiddle - React, Tailwind, and code Playground

by wittwerj

JavaScript

var test = function () {

    var players = 60;
    var salarycap = 100000;
    var salaries = [21500, 18250, 18000, 17750, 17500, 17250, 17000, 16750, 16500, 16250, 16000, 15750, 15500, 15250, 15000, 14750, 14500, 14250, 14000, 13750, 13500, 13250, 13000, 12750, 12500, 12250, 12000, 11750, 11500, 11250, 11000, 10750, 10500, 10250, 10000, 9750, 9500, 9250, 9000, 8750, 8500, 8250, 8000, 7750, 7500, 7250, 7000, 6750, 6500, 6250, 6000, 5750, 5500, 5250, 5000, 4750, 4500, 4250, 4000, 3750];
    var projections = [29, 23, 20, 17, 19, 17, 15, 20, 19, 18, 17, 16, 15, 14, 25, 22, 19, 16, 19, 18, 17, 16, 15, 14, 13, 12, 10, 9, 8, 17, 15, 13, 11, 12, 11, 10, 9, 8, 7, 6, 5, 9, 8, 7, 6, 10, 9, 8, 7, 6, 5, 8, 8, 8, 7, 7, 5, 5, 8, 2];

    var picks = knapsack(players, salarycap, salaries, projections);

    printPicks(picks, players, salarycap, salaries, projections)
}();

function knapsack(n, size, weights, values) {
    var matrix = new Array();
    var picks = new Array();

    for (var i = 0; i <= n; i++) {
        matrix.push(new Array());
        picks.push(new Array());

        //initialize to 0
        for (var j = 0; j <= size; j++) {
            matrix[i][j] = 0;
            picks[i][j] = 0;
        }
    }

    for (var i = 1; i <= n; i++) {
        for (var j = 0; j <= size; j++) {
            if (weights[i - 1] <= j) {

                var excluded = matrix[i - 1][j];
                var included = values[i - 1] + matrix[i - 1][j - weights[i - 1]];

                if (included > excluded) {
                    picks[i][j] = 1;
                    matrix[i][j] = included;
                } else {
                    picks[i][j] = -1;
                    matrix[i][j] = excluded;
                }
            } else {
                matrix[i][j] = matrix[i - 1][j];
                picks[i][j] = -1;
            }
        }
    }

    return picks;
}

function printPicks(picks, n, size, weights, values) {
    console.log('items chosen: ');
    while (n > 0) {
     ...