Chinaunix
标题:
求某个组合的和最接近某个值
[打印本页]
作者:
zhengwei_zw
时间:
2022-03-17 11:09
标题:
求某个组合的和最接近某个值
本帖最后由 zhengwei_zw 于 2022-03-17 11:18 编辑
有
8,600.00
94.05
72.00
166.05
8,600.00
494.31
101.67
72.00
8,600.00
267.36
4,022.58
4,300.00
177.53
737.00
508.33
72.00
36.00
7.20
3,966.09
10,246.02
986.72
8,600.00
2,772.45
1,490.02
477.38
340.80
101.67
72.00
3,088.60
10.17
7.20
142.00
205.00
60.20
150.00
10.80
391.53
4,300.00
377.27
39个数字
需要组合测试,接近17095.00的组合排序
作者:
zhengwei_zw
时间:
2022-03-17 11:17
比如a+b+c=17094.9 a+b+d=17093 a+c+e=17095.1 c+e+f=17094.87
然后把上面的组合和值打印出来
作者:
wh7211
时间:
2022-03-18 12:50
回复
2#
zhengwei_zw
cat 1
8600.00
94.05
72.00
166.05
8600.00
494.31
101.67
72.00
8600.00
267.36
4022.58
4300.00
177.53
737.00
508.33
72.00
36.00
7.20
3966.09
10246.02
986.72
8600.00
2772.45
1490.02
477.38
340.80
101.67
72.00
3088.60
10.17
7.20
142.00
205.00
60.20
150.00
10.80
391.53
4300.00
377.27
awk '{a[NR]=$1}END{for(i=1;i<=NR;i++){for(j=i+1;j<=NR;j++){for(k=j+1;k<=NR;k++){b=a[i]+a[j]+a[k];c=17095;d=b>=c?b-c:c-b;e[a[i]"+"a[j]"+"a[k]"="b]=d}}};PROCINFO["sorted_in"]="@val_num_asc";for(i in e){if(e[i]<=200){print i" -> "e[i]}}}' 1
4022.58+10246.02+2772.45=17041 -> 53.95
4300.00+8600.00+4300.00=17200 -> 105
8600.00+4300.00+4300.00=17200 -> 105
3966.09+10246.02+2772.45=16984.6 -> 110.44
8600.00+7.20+8600.00=17207.2 -> 112.2
8600.00+8600.00+7.20=17207.2 -> 112.2
8600.00+8600.00+10.17=17210.2 -> 115.17
8600.00+8600.00+10.80=17210.8 -> 115.8
8600.00+36.00+8600.00=17236 -> 141
8600.00+8600.00+36.00=17236 -> 141
8600.00+8600.00+60.20=17260.2 -> 165.2
8600.00+4022.58+4300.00=16922.6 -> 172.42
4022.58+8600.00+4300.00=16922.6 -> 172.42
4022.58+4300.00+8600.00=16922.6 -> 172.42
8600.00+8600.00+72.00=17272 -> 177
72.00+8600.00+8600.00=17272 -> 177
8600.00+72.00+8600.00=17272 -> 177
8600.00+94.05+8600.00=17294 -> 199.05
94.05+8600.00+8600.00=17294 -> 199.05
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2