怎样借助相关编程语言解决如下问题( 二 )
附上LINGO程序:model:sets:m/1..16/:x,y,a;endsetsdata:a=31.9 24.1 24.6 26.7 31.5 16.9 23.2 25.9 16.0 19.2 31.8 18.3 16.9 22.8 12.4 19.6;enddatamin=(@sum(m:a*x)+@sum(m:a*y)-100)/(@sum(m:x+y));@for(m(i):x(i)+y(i)\u0026lt;=1);@sum(m:a*x)\u0026gt;=100;@sum(m:a*y)\u0026gt;=100;@for(m:@bin(x));@for(m:@bin(y));求解的结果是第6、9、12、13、15、16个数一组,第3、4、8、14个数一组,最小值为10.01.使用LINGO求解时我用了全局最优求解器,程序居然跑了五分半!!!不过这应该就是最优解了。
■网友
谢邀,我认为这个问题可能无解我的代码如下:#include\u0026lt;iostream\u0026gt;#include\u0026lt;cmath\u0026gt;#define f(x) for(itr=0;itr\u0026lt;=1;itr++)using namespace std;const double data=https://www.zhihu.com/api/v4/questions/49066225/{31.9,24.1,24.6,26.7,31.5,16.9,23.2,25.9,16.0,19.2};int main(){ double sum; int itr={}; f(0){ f(1){ f(2){ f(3){ f(4){ f(5){ f(6){ f(7){ f(8){ f(9){ sum=0; for(int i=0; i/u0026lt;10; i++){ if(itr) sum+= data; } if(abs(sum-120.0000000)/u0026lt;0.05){ for(int j=0; j/u0026lt;10; j++){ if(itr) cout/u0026lt;/u0026lt;data/u0026lt;/u0026lt;/u0026#39;//t/u0026#39;; } cout/u0026lt;/u0026lt;endl; return 0; } }}}}}}}}}} return 0;}如果有解的话,应该会把两组数中的一组输出,但实际上并没有任何输出。而如果把0.05放大到0.3的话,就会出现一组和为120.2的数。
■网友
只有这么些数的话,二进制枚举就好啦
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 人员■海安疾控:北京确诊病例密接者及相关人员检测结果均为阴性
- 大连暂停小诊所和村卫生室等相关医疗服务
- 浙江柯桥排查两起进口冷链食品风险相关人员核酸阴性
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 怎样进入通信行业
- 怎样评价扶他柠檬茶的小说《云养汉》的结尾
