鱼C论坛

 找回密码
 立即注册
查看: 3028|回复: 4

贪心法背包问题

[复制链接]
发表于 2012-4-28 00:34:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 血轩宇 于 2012-4-30 00:32 编辑

这是我最终的代码。去掉
printf("输入7个物品重量:\n");
  for(i=1;i<=7;i++)
  scanf("%f",&w[i]);
  printf("输入7个物品价值:\n");
  for(i=1;i<=7;i++)
  scanf("%f",&v[i]);
  printf("输入背包容量:\n");
  scanf("%f",c);
这一段就能正常运行。结果也正确
但是一加上,自由输入,然后就悲剧了。为什么啊!!!!

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
void bag(float w[],float v[],float c,int n)
{

float a[8],x[8];
int i,j;
float w1[8],v1[8];
float m,sum;
sum=0;
for(i=1;i<=n;i++)
a[i]=v[i]/w[i];
for(i=1;i<=n-1;i++)
{
for(j=1;j<=n-1;j++)
if(a[j]<a[j+1])
{
m=a[j];
a[j]=a[j+1];
a[j+1]=m;
}
}
for(i=1;i<=n;i++)
{
v1[i]=0;
w1[i]=0;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++){
if((int)(v[i]/w[i]*100)==(int)(a[j]*100) && v1[j]==0 && w1[j]==0)
{
v1[j]=v[i];
w1[j]=w[i];
break;
}
}
}
for(i=1;i<=n;i++)
{
x[i]=0;
}
i=1;
while(w1[i]<=c)
{
x[i]=1;
c=c-w1[i];
i++;
}
x[i]=c/w1[i];
for (i=1;i<8;i++)
{sum=(sum+v[i]*x[i]);}
  printf("物品的最大价值:\n");
   printf("%f\n",sum);
     printf("物品的放入情况为:\n");
  for(i=1;i<8;i++)
   if(x[i]>0 )
   printf("%f\n",x[i]);
}
void main()
{
float w[8]={0,2,3,5,7,1,4,1};
float v[8]={0,10,5,15,7,6,18,3};
float c=15;
int n=7;
int i;
  printf("输入7个物品重量:\n");
  for(i=1;i<=7;i++)
  scanf("%f",&w[i]);
  printf("输入7个物品价值:\n");
  for(i=1;i<=7;i++)
  scanf("%f",&v);
  printf("输入背包容量:\n");
  scanf("%f",c);
  bag(w,v,c,7);
}

[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-4-28 12:03:44 | 显示全部楼层
虽然代码长没看懂,但我找到了错误。
printf("输入7个物品重量:\n");
  for(i=1;i<=7;i++)
  scanf("%f",&w[i]);
  printf("输入7个物品价值:\n");
  for(i=1;i<=7;i++)
  scanf("%f",&v[i]);
  printf("输入背包容量:\n");
  scanf("%f",&c);                  //scanf("%f",c);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-4-30 00:31:07 | 显示全部楼层
。。。。。。。。。。。。。。。。。。。。是这样么。。我去看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-4-30 00:32:06 | 显示全部楼层
果然是- - 。。。。。。。。我是渣渣。。。谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-6-10 18:55:41 | 显示全部楼层
这是什么:funk:看不懂- -
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-5 09:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表