宝物的选择c语言 思路,c语言-珍品的选择

c语言-宝物的选择

本帖最后由 arthemis911222 于 2014-12-14 18:07:30 编辑

#include 

#include 

#include 

using namespace std;

int main()

{

int a[100],b[100];

double c[100],d[100],big=0;

int i,j,w,n;

scanf("%d%d",&w,&n);

for(i=0;i

{

scanf("%d%d",&a[i],&b[i]);

c[i]=b[i]/(a[i]*1.0);

d[i]=c[i];

}

sort(d,d+n-1);

for(i=n-1;i>=0;i--)

{

for(j=0;j

{

if(c[j]==d[i]&&w>0)

{

if(w>=a[j])

big=big+b[j];

else

big=big+c[j]*w;

w=w-a[j];

}

}

}

printf("%.2lf\n",big);

}

题目是:

小鱼儿在一次探险途中发现了一个山洞,并且在这个山洞里找到了宝藏,可是小鱼儿发现想要把宝藏全部带走是不可能的(因为他只带了一个袋子),不过很快他就发现每个宝物旁边都有几个字,上面写着宝物的体积和价值,而且这些宝物可以分割成任意大小。小鱼儿想知道如何选取宝物,才能使带走宝物的价值最大。

测试数据:

1000 100

79 1

71 45

97 37

18 48

99 12

17 91

15 87

78 55

4 12

22 74

49 70

100 50

92 15

63 13

55 79

42 26

25 100

57 32

76 45

41 16

89 46

3 35

36 48

82 80

71 21

82 91

65 23

13 39

40 41

76 5

78 98

73 61

54 76

72 57

63 56

59 16

51 85

21 100

20 98

10 47

37 60

32 22

37 98

91 60

93 95

61 69

24 25

89 18

23 63

54 68

74 18

23 51

85 32

24 42

98 41

52 80

22 33

20 20

38 77

40 80

71 8

23 46

95 10

98 100

11 72

25 87

70 43

86 54

67 74

3 20

11 73

98 94

21 60

45 77

15 70

94 55

90 58

88 20

61 67

76 100

98 96

63 7

54 43

41 45

46 13

24 71

44 30

13 61

22 9

28 24

96 23

98 7

27 36

45 78

14 82

70 70

52 77

62 3

43 95

77 67

2568.67

求教代码哪里错了?

------解决思路----------------------

struct shemmegui{

int tiji;

int jiazhi;

double average;

};

#include

int main()

{

struct shemmegui t,a[100];

struct shemmegui temp;

int v,n,i,k;

double m,max;

scanf("%d%d",&v,&n);

for(i=0;i

{

scanf("%d%d",&t.tiji,&t.jiazhi);

t.average=t.jiazhi*1.0/t.tiji;

a[i]=t;

}

for(i=0;i

{

for(k=0;k

{

if(a[k].average>a[i].average)

{

temp=a[k];

a[k]=a[i];

a[i]=temp;

}

}

}

m=0;

max=0;

for(i=0;i

{

if(a[i].tiji>v&&v>0)

{

m=m+a[i].average*v;

v=0;

if(m>max) max=m;

}

if(a[i].tiji<=v&&v>0)

{

m=m+a[i].jiazhi;

v=v-a[i].tiji;

if(m>max)

{

max=m;

}

}

}

printf("%.2lf\n",max);

return 0;

}

------解决思路----------------------

如果上面的是你的代码,我看出来一个问题,double类型不能用 == ,如果想用就得这样 fabs( c [ j ] - d[ i ] ) 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值