中易网

C语言根据总金额查询收获数量

答案:4  悬赏:0  
解决时间 2021-12-13 11:58
本人遇到一个问题:
仓库收获到了一批货物,每个货物收获数量在0到10之间,必为整数。已知货物单价清单如下:
55413.15,
34039.78,
29854.21,
38571.93,
31912.76,
44664.79,
67553.03,
61702.58,
83413.72,
92970.95,
279503.02,
265720.62,
60921.02,
117565.85,
35437.71,
34207.97,
56721.39,
104887.20,
26382.89,
56469.38,
97670.43,
59153.45
现收到发票一张,不知道发票上面对应哪些收获,但是知道总金额为1365461.06.现在需要知道哪些货物收了几个可以达到这张发票的金额?(收获数量)
我大概想了下要用C语言实现的话要嵌套22层循环,但是苦于C语言是好多年前学过的了,现在也不知道怎么写。想请问下有没有人可以帮忙写一下代码,或者帮我执行一下给我结果。谢谢!
最佳答案
我帮你写,稍等半小时


结果出来了
  Local optimal solution found.
   Objective value:                              0.000000
   Extended solver steps:                           15733
   Total solver iterations:                        234367


Variable           Value        Reduced Cost
                         N( N1)        1.000000            0.000000
                         N( N2)        2.000000            0.000000
                         N( N3)        1.000000            0.000000
                         N( N4)        2.000000            0.000000
                         N( N5)        1.000000            0.000000
                         N( N6)        2.000000            0.000000
                         N( N7)        2.000000            0.000000
                         N( N8)       0.9999475            0.000000
                         N( N9)       0.9999290            0.000000
                        N( N10)        1.000000            0.000000
                        N( N11)        0.000000            0.000000
                        N( N12)        0.000000            0.000000
                        N( N13)       0.9999482            0.000000
                        N( N14)       0.9999257            0.000000
                        N( N15)        2.000000            0.000000
                        N( N16)        2.000000            0.000000
                        N( N17)        1.000000            0.000000
                        N( N18)        0.000000            0.000000
                        N( N19)        2.000000            0.000000
                        N( N20)        1.000000            0.000000
                        N( N21)        1.000000            0.000000
                        N( N22)       0.9999497            0.000000
sets:
  s/n1..n22/:n,value;
endsets
data:
value =55413.15
34039.78
29854.21
38571.93
31912.76
44664.79
67553.03
61702.58
83413.72
92970.95
279503.02
265720.62
60921.02
117565.85
35437.71
34207.97
56721.39
104887.20
26382.89
56469.38
97670.43
59153.45;
enddata
min =@abs(@sum(s:n*value)-1365461.06);
@for(s(i):
@gin(n(i));
n(i)>=0;
n(i)<=10;
);
全部回答
好像很高端的样子
#include void main() { char piece[22]={0},index=0; float price[22]={55413.15,34039.78,29854.21,38571.93,31912.76,44664.79,67553.03,61702.58,83413.72,92970.95,279503.02,265720.62,60921.02,117565.85,35437.71,34207.97,56721.39,104887.20,26382.89,56469.38,97670.43,59153.45}; float sum=0.0; for(piece[0]=0;piece[0]<10;piece[0]++) for(piece[1]=0;piece[1]<10;piece[1]++) for(piece[2]=0;piece[2]<10;piece[2]++) for(piece[3]=0;piece[3]<10;piece[3]++) for(piece[4]=0;piece[4]<10;piece[4]++) for(piece[5]=0;piece[5]<10;piece[5]++) for(piece[6]=0;piece[6]<10;piece[6]++) for(piece[7]=0;piece[7]<10;piece[7]++) for(piece[8]=0;piece[8]<10;piece[8]++) for(piece[9]=0;piece[9]<10;piece[9]++) for(piece[10]=0;piece[10]<10;piece[10]++) for(piece[11]=0;piece[11]<10;piece[11]++) for(piece[12]=0;piece[12]<10;piece[12]++) for(piece[13]=0;piece[13]<10;piece[13]++) for(piece[14]=0;piece[14]<10;piece[14]++) for(piece[15]=0;piece[15]<10;piece[15]++) for(piece[16]=0;piece[16]<10;piece[16]++) for(piece[17]=0;piece[17]<10;piece[17]++) for(piece[18]=0;piece[18]<10;piece[18]++) for(piece[19]=0;piece[19]<10;piece[19]++) for(piece[20]=0;piece[20]<10;piece[20]++) for(piece[21]=0;piece[21]<10;piece[21]++) { for(index=0;index<22;index++) sum+=price[index]*piece[index]; if(sum==1365461.06) for(index=0;index<22;index++) printf("%f\t",piece[index]); } if(piece[21]==10) printf("\ncan not get piece!!"); getchar(); } 这么大的运算量,这种算法不好,普通的机子运行(感觉就是超级计算机也要运行很久)要10^22次方,感脚就是不可行,找一些快速的算法吧,建议 纯手打,没运行结果(机子运行不了这么久),非copy,望采纳^-^
看看我写的。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
商水县周口中铁物流集团这个地址在什么地方,
夯嘴夯腮的意思是什么?夯嘴夯腮的释义是什么
戴尔v系列的电脑怎么样啊?
江夏区武汉小胡子烧烤(美食城店)这个地址怎么
如果一个女性朋友说把你当成哥们?还有戏吗?
螺距6的内孔螺纹要挑多深要怎么磨出刀的角度
疏遬的意思是什么啊?请解释下!
不合格焊点的名称
开福区长沙中国移动(宋勇店)地址在哪,我要去
小画伽少儿美术馆地址在什么地方,想过去办事
河北省廊坊市OPPO业务电话有吗
萨尔图区大庆东风新村中医院康复骨伤门诊这个
虿鬈的意思是什么啊?请解释下!
生报的意思是什么?生报的释义是什么啊?
2012年安徽省英语b级考试成绩查询在哪里可以
推荐资讯
贪茸的意思是什么啊?请解释下!
手机里的文件类型怎样改
除了58和赶集还有哪个网站招聘比较好
物业主仼辟职报告怎么写
我最囧的一瞬间作文600
社保停缴的当月可以报销吗
香港早期有部电影讲述一女学生与一名男老师是
龙港区审计局地址在哪,我要去那里办事
浅儒的意思是什么啊?请解释下!
国际代购商品,买好货了,买家申请退款怎么办
军绿色的大衣配蓝色的打底裤好看吗?
民萌的意思是什么啊?请解释下!
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?