Advertisement
Guest User

zeroone.cpp

a guest
Nov 20th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.27 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int vi[10],wi[10],n;
  4. int c[100][100];
  5. int wt=0,bt=0;
  6. int show(int i,int k);
  7. int main()
  8. {
  9. int i,j,k;
  10. cin>>n;
  11. for(i=1;i<=n;i++)
  12. {
  13. cin>>wi[i]>>vi[i];
  14. }
  15. int mw;
  16. cin>>mw;
  17. for(i=0;i<=n;i++)
  18. {
  19. c[i][0]=0;
  20. }
  21. for(i=0;i<=mw;i++)
  22. {
  23. c[0][i]=0;
  24. }
  25. int w;
  26. for(i=1;i<=n;i++)
  27. {
  28. for(w=1;w<=mw;w++)
  29. {
  30. if(wi[i]>w)
  31. {
  32. c[i][w]=c[i-1][w];
  33. }
  34. else
  35. {
  36. c[i][w]=max(c[i-1][w],c[i-1][w-wi[i]]+vi[i]);
  37. }
  38. }
  39. }
  40.  
  41. // for(i=0;i<=n;i++)
  42. // {
  43. // for(j=0;j<=mw;j++)
  44. // {
  45. // cout<<c[i][j]<<"\t";
  46. // }
  47. // cout<<endl;
  48. // }
  49. cout<<"Item"<<"\t"<<"weight"<<"\t"<<"benefit"<<endl;
  50. show(n,mw);
  51.  
  52.  
  53.  
  54. return 0;
  55. }
  56.  
  57.  
  58. int show(int i,int k)
  59. {
  60. if(i==0)
  61. {
  62. cout<<endl<<"total weight:"<<wt<<"\t"<<"total benefit:"<<bt<<endl;
  63. return 0;
  64. }
  65. else if(c[i][k]==c[i-1][k])
  66. {
  67. show(i-1,k);
  68. }
  69. else
  70. {
  71. cout<<i<<"\t"<<wi[i]<<"\t"<<vi[i]<<endl;
  72. wt+=wi[i];
  73. bt+=vi[i];
  74. show(i-1,k-wi[i-1]);
  75. }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement