#include<stdio.h>
void fractional_knapsack(float weight[],float profit[],int n,int capacity)
{
int i;
int used[100];
for(i=0;i<n;i++)
{
used[i]=0;
}
float total_profit =0.0;
int remaining_capacity = capacity;
float X[n];
while(remaining_capacity>0)
{
int best_index=-1;
float best_ratio=0.0;
for(i=0;i<n;i++)
{
if(used[i]==0)
{
float ratio =profit[i]/weight[i];
if(ratio>best_ratio)
{
best_ratio=ratio;
best_index=i;
}
}
}
if (best_index==-1)
{
break;
}
used[best_index]=1;
if(weight[best_index]<=remaining_capacity)
{
X[best_index]=1;
total_profit+=profit[best_index];
remaining_capacity-=weight[best_index];
}
else
{
X[best_index]=(remaining_capacity/weight[best_index]);
total_profit+=profit[best_index]*(remaining_capacity/weight[best_index]);
remaining_capacity=0;
}
}
printf("X[]:");
for(i=0;i<n;i++)
{
printf(" %.2f ",X[i]);
}
printf("\ntotal profit is :%.2f",total_profit);
}
int main()
{
int n;
int i;
float weight[n];
float profit[n];
int capacity;
printf("enter items :");
scanf("%d",&n);
printf("enter capacity :");
scanf("%f",&capacity);
printf("enter weights");
for(i=0;i<n;i++)
{
scanf("%f",&weight[i]);
}
printf("enter profits :");
for(i=0;i<n;i++)
{
scanf("%f",&profit[i]);
}
fractional_knapsack(weight,profit,n,capacity);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4Kdm9pZCBmcmFjdGlvbmFsX2tuYXBzYWNrKGZsb2F0IHdlaWdodFtdLGZsb2F0IHByb2ZpdFtdLGludCBuLGludCBjYXBhY2l0eSkKeyAgICAKICAgIGludCBpOwoJaW50IHVzZWRbMTAwXTsKCWZvcihpPTA7aTxuO2krKykKCXsKCQl1c2VkW2ldPTA7Cgl9CglmbG9hdCB0b3RhbF9wcm9maXQgPTAuMDsKCWludCByZW1haW5pbmdfY2FwYWNpdHkgPSBjYXBhY2l0eTsKCWZsb2F0IFhbbl07Cgl3aGlsZShyZW1haW5pbmdfY2FwYWNpdHk+MCkKCXsKCQlpbnQgYmVzdF9pbmRleD0tMTsKCQlmbG9hdCBiZXN0X3JhdGlvPTAuMDsKCQlmb3IoaT0wO2k8bjtpKyspCgkJewoJCQlpZih1c2VkW2ldPT0wKQoJCQl7CgkJCQlmbG9hdCByYXRpbyA9cHJvZml0W2ldL3dlaWdodFtpXTsKCQkJCWlmKHJhdGlvPmJlc3RfcmF0aW8pCgkJCQl7CgkJCQkJYmVzdF9yYXRpbz1yYXRpbzsKCQkJCQliZXN0X2luZGV4PWk7CgkJCQl9CgkJCX0KCQl9CgkJaWYgKGJlc3RfaW5kZXg9PS0xKQoJCXsKCQkJYnJlYWs7CgkJfQoJCXVzZWRbYmVzdF9pbmRleF09MTsKCQlpZih3ZWlnaHRbYmVzdF9pbmRleF08PXJlbWFpbmluZ19jYXBhY2l0eSkKCQl7CgkJCVhbYmVzdF9pbmRleF09MTsKCQkgICAgdG90YWxfcHJvZml0Kz1wcm9maXRbYmVzdF9pbmRleF07CgkJCXJlbWFpbmluZ19jYXBhY2l0eS09d2VpZ2h0W2Jlc3RfaW5kZXhdOwoJCX0KCQllbHNlCgkJewoJCQlYW2Jlc3RfaW5kZXhdPShyZW1haW5pbmdfY2FwYWNpdHkvd2VpZ2h0W2Jlc3RfaW5kZXhdKTsKCQkJdG90YWxfcHJvZml0Kz1wcm9maXRbYmVzdF9pbmRleF0qKHJlbWFpbmluZ19jYXBhY2l0eS93ZWlnaHRbYmVzdF9pbmRleF0pOwoJCQlyZW1haW5pbmdfY2FwYWNpdHk9MDsKCQl9Cgl9CglwcmludGYoIlhbXToiKTsKCWZvcihpPTA7aTxuO2krKykKCXsKCQlwcmludGYoIiAlLjJmICIsWFtpXSk7Cgl9CglwcmludGYoIlxudG90YWwgcHJvZml0IGlzIDolLjJmIix0b3RhbF9wcm9maXQpOwp9CmludCBtYWluKCkKewoJaW50IG47CglpbnQgaTsKCWZsb2F0IHdlaWdodFtuXTsKCWZsb2F0IHByb2ZpdFtuXTsKCWludCBjYXBhY2l0eTsKCXByaW50ZigiZW50ZXIgaXRlbXMgOiIpOwoJc2NhbmYoIiVkIiwmbik7CglwcmludGYoImVudGVyIGNhcGFjaXR5IDoiKTsKCXNjYW5mKCIlZiIsJmNhcGFjaXR5KTsKCXByaW50ZigiZW50ZXIgd2VpZ2h0cyIpOwoJZm9yKGk9MDtpPG47aSsrKQoJewoJCXNjYW5mKCIlZiIsJndlaWdodFtpXSk7Cgl9CglwcmludGYoImVudGVyIHByb2ZpdHMgOiIpOwoJZm9yKGk9MDtpPG47aSsrKQoJewoJCXNjYW5mKCIlZiIsJnByb2ZpdFtpXSk7Cgl9CglmcmFjdGlvbmFsX2tuYXBzYWNrKHdlaWdodCxwcm9maXQsbixjYXBhY2l0eSk7CglyZXR1cm4gMDsKfQ==