Advertisement
Guest User

DynamicProgramming SubsetSum

a guest
Nov 13th, 2013
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.66 KB | None | 0 0
  1. for(int i = 0; i < N; i++)
  2. {
  3.    int newminpos = minpos, newmaxpos = maxpos;
  4.    int newpossible[OFFSET + OFFSET] = { 0 };
  5.    for(int j = maxpos; j >= minpos; j--) // j = one possible sum
  6.    {
  7.       if (possible[j+OFFSET]) newpossible[j+nums[i]+OFFSET] = 1;
  8.       if (j+nums[i] > newmaxpos) newmaxpos = j+nums[i];
  9.       if (j+nums[i] < newminpos) newminpos = j+nums[i];
  10.    }
  11.    minpos = newminpos;
  12.    maxpos = newmaxpos;
  13.    for(int j = maxpos; j >= minpos; j--)
  14.       if (newpossible[j+OFFSET] == 1)
  15.          possible[j+OFFSET] = 1;
  16.    if (nums[i] > maxpos) maxpos = nums[i];
  17.    if (nums[i] < minpos) minpos = nums[i];
  18.    possible[nums[i]+OFFSET] = 1;
  19. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement