Create knapsnak-greddy-prob.cpp
parent
273bca1e3f
commit
8699077cf6
|
@ -0,0 +1,59 @@
|
|||
// You are using GCC
|
||||
#include<iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int main()
|
||||
{
|
||||
int capacity,items,cur_weight,item;
|
||||
int used[10];
|
||||
float profit;
|
||||
int i;
|
||||
int weight[10];
|
||||
int value[10];
|
||||
|
||||
cout<<"Enter the capacity of knapsack:"<<endl;
|
||||
cin>>capacity;
|
||||
|
||||
|
||||
cout<<"Enter the number of items:"<<endl;
|
||||
cin>>items;
|
||||
|
||||
cout<<"Enter the weight and value of "<<items<<" item:"<<endl;
|
||||
for(i=0;i<items;i++)
|
||||
{
|
||||
cin>>weight[i];
|
||||
cin>>value[i];
|
||||
}
|
||||
for(i=0;i<items;++i)
|
||||
{
|
||||
used[i]=0;
|
||||
}
|
||||
|
||||
cur_weight = capacity;
|
||||
|
||||
while(cur_weight>0)
|
||||
{
|
||||
item = -1;
|
||||
for(i=0;i<items;++i)
|
||||
if((used[i]==0) && ((item==-1) || ((float) value[i] / weight[i] > (float) value[item] / weight[item])))
|
||||
item = i;
|
||||
|
||||
used[item] = 1;
|
||||
cur_weight -= weight[item];
|
||||
profit += value[item];
|
||||
|
||||
if(cur_weight >= 0)
|
||||
cout<<item+1<<" "<<value[item]<<" "<<weight[item]<<" "<<cur_weight<<"."<<endl;
|
||||
|
||||
else
|
||||
{
|
||||
int percent;
|
||||
percent = (int) ((1 + (float) cur_weight / weight[item]) * 100);
|
||||
cout<<percent<<"%"<<" "<<value[item]<<" "<<weight[item]<<" "<<item+1<<" "<<endl;
|
||||
profit -= value[item];
|
||||
profit += (1 + (float)cur_weight / weight[item]) * value[item];
|
||||
}
|
||||
}
|
||||
printf("Filled the bag with objects worth %.2f Rs.\n",profit);
|
||||
}
|
Loading…
Reference in New Issue