Advertisement
icatalin

rucsac (discreta)

May 30th, 2018
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.89 KB | None | 0 0
  1. #include<stdio.h>
  2.  
  3. int maxim(int a, int b)
  4. {
  5. if(a > b) return a;
  6. return b;
  7. }
  8.  
  9. int main()
  10. {
  11. int n, G, i, j, cmax[101][101], c[101], g[101];
  12.  
  13. FILE *f = fopen("rucsac.txt", "r");
  14.  
  15. fscanf(f, "%d", &G);
  16. fscanf(f, "%d", &n);
  17.  
  18. for(i = 1; i <= n; i++)
  19. fscanf(f, "%d %d", &c[i], &g[i]);
  20.  
  21. fclose(f);
  22.  
  23. for (i = 1; i <= n; i++)
  24. for (j = 1; j <= G; j++)
  25. {
  26. cmax[i][j] = cmax[i-1][j];
  27. if((g[i] <= j) && (cmax[i-1][j-g[i]] + c[i] > cmax[i-1][j]))
  28. cmax[i][j] = cmax[i-1][j-g[i]] + c[i];
  29. }
  30.  
  31. printf("Castig maxim: %d\n", cmax[n][G]);
  32.  
  33. printf("Obiectele selectate:\n");
  34.  
  35. i = n, j = G;
  36. while(i >= 1)
  37. {
  38. if(cmax[i][j] != cmax[i-1][j])
  39. {
  40. printf("%d ", i);
  41. j = j - g[i];
  42. }
  43. i--;
  44. }
  45.  
  46. return 0;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement