function [ n_data, n, v, w, s, k ] = knapsack_values ( n_data )

%*****************************************************************************80
%
%% knapsack_values() returns samples of the knapsack problem.
%
%  Licensing:
%
%    This code is distributed under the MIT license. 
%
%  Modified:
%
%    19 November 2024
%
%  Author:
%
%    John Burkardt
%
%  Input:
%
%    integer n_data: the user sets n_data to 0 before the first call.  
%
%  Output:
%
%    integer n_data: on each call, the routine increments n_data by 1, and
%    returns the corresponding data; when there is no more data, the
%    output value of n_data will be 0 again.
%
%    integer n: the number of items
%
%    real v(n): the value of each item;
%
%    real w(n): the weight of each item;
%
%    integer s(n): 1 if the item is used in the optimal solution, 0 otherwise.
%
%    real k: the weight capacity of the knapsack.
%
  n_max = 10;

  if ( n_data == n_max )
    n_data = 0;
    n = 0;
    v = [];
    w = [];
    s = [];
    k = 0;
    return
  end

  if ( n_data == 0 )

    n = 5;
    v = [  24,  13,  23,  15,  16 ];
    w = [  12,   7,  11,   8,   9 ];
    s = [   0,   1,   1,   1,   0 ];
    k = 26;

  elseif ( n_data == 1 )

    n = 6;
    v = [  50,  50,  64,  46,  50,   5 ];
    w = [  56,  59,  80,  64,  75,  17 ];
    s = [   1,   1,   0,   0,   1,   0 ];
    k = 190;

  elseif ( n_data == 2 )

    n = 6;
    v = [  175, 90, 20, 50, 10, 200 ];
    w = [  10,   9,  4,  2,  1,  20 ];
    s = [   1,   1,  0,  0,  1,   0 ];
    k = 20;

  elseif ( n_data == 3 )
 
    n = 7;
    v = [  70,  20,  39,  37,   7,   5,  10 ];
    w = [  31,  10,  20,  19,   4,   3,   6 ];
    s = [   1,   0,   0,   1,   0,   0,   0 ];
    k = 50;

  elseif ( n_data == 4 )
 
    n = 7;
    v = [ 442, 525, 511, 593, 546, 564, 617 ];
    w = [  41,  50,  49,  59,  55,  57,  60 ];
    s = [   1,   0,   0,   1,   0,   0,   1 ];
    k = 170;

  elseif ( n_data == 5 )

    n = 8;
    v = [ 350, 400, 450,  20,  70,   8,   5,   5 ];
    w = [  25,  35,  45,   5,  25,   3,   2,   2 ];
    s = [   1,   0,   1,   1,   1,   0,   1,   1 ];
    k = 104;

  elseif ( n_data == 6 )

    n = 10;
    v = [ 505, 352, 458, 220, 354, 414, 498, 545, 473, 543 ];
    w = [  23,  26,  20,  18,  32,  27,  29,  26,  30,  27 ];
    s = [   1,   0,   0,   1,   0,   0,   0,   1,   0,   0 ];
    k = 67;

  elseif ( n_data == 7 )

    n = 10;
    v = [  92,  57,  49,  68,  60,  43,  67,  84,  87,  72 ];
    w = [  23,  31,  29,  44,  53,  38,  63,  85,  89,  82 ];
    s = [   1,   1,   1,   1,   0,   1,   0,   0,   0,   0 ];
    k = 165;

  elseif ( n_data == 8 )

    n = 15;
    v = [  135, 139, 149, 150, 156, 163, 173, 184, 192, 201, ...
           210, 214, 221, 229, 240 ];
    w = [   70,  73,  77,  80,  82,  87,  90,  94,  98, 106, ...
           110, 113, 115, 118, 120 ];
    s = [    1,   0,   1,   0,   1,   0,   1,   1,   1,   0, ...
             0,   0,   0,   1,   1 ];
    k = 750;

  elseif ( n_data == 9 )

    n = 24;
    v = [  825594, 1677009, 1676628, 1523970,  943972, ...
            97426,   69666, 1296457, 1679693, 1902996, ...
          1844992, 1049289, 1252836, 1319836,  953277, ...
          2067538,  675367,  853655, 1826027,   65731, ...
           901489,  577243,  466257,  369261 ];
    w = [  382745,  799601,  909247,  729069,  467902, ...
            44328,   34610,  698150,  823460,  903959, ...
           853665,  551830,  610856,  670702,  488960, ...
           951111,  323046,  446298,  931161,   31385, ...
           496951,  264724,  224916,  169684 ];
    s = [       1,       1,       0,       1,       1, ...
                1,       0,       0,       0,       1, ...
                1,       0,       1,       0,       0, ...
                1,       0,       0,       0,       0, ...
                0,       1,       1,       1 ];
    k = 6404180;

  end
%
%  Force vectors to be COLUMN vectors.
%
  v = v';
  w = w';
  s = s';

  n_data = n_data + 1;

  return
end
