免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 54nwq
打印 上一主题 下一主题

[数值计算] 求教用awk怎样凑数字 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2015-03-03 15:00 |只看该作者
  1. 1:  95.09+88+80.26+7.22+4.75
  2. 2:  95.09+78.01+43.11+34.83+12.29+7.22+4.77
  3. 3:  95.09+68.87+54.77+28.17+12.9+12.29+3.23
  4. 4:  95.09+68.87+38.59+34.83+12.9+12.29+4.77+4.75+3.23
  5. 5:  95.09+66.61+54.99+43.11+12.29+3.23
  6. 6:  95.09+54.99+54.77+34.83+12.9+12.29+7.22+3.23
  7. 7:  88+78.01+56.27+28.17+12.9+7.22+4.75
  8. 8:  88+77.26+56.27+38.59+7.22+4.75+3.23
  9. 9:  88+68.87+54.99+38.59+12.9+7.22+4.75
  10. 10:  88+64.04+56.27+38.59+12.9+12.29+3.23
  11. 11:  88+56.27+54.77+43.11+12.9+12.29+4.75+3.23
  12. 12:  88+56.27+54.77+38.59+28.17+4.77+4.75
  13. 13:  83.95+80.26+43.11+34.83+12.9+12.29+4.75+3.23
  14. 14:  83.95+80.26+38.59+34.83+28.17+4.77+4.75
  15. 15:  83.95+77.26+43.11+38.59+12.9+12.29+7.22
  16. 16:  83.95+77.26+43.11+34.83+28.17+4.77+3.23
  17. 17:  83.95+68.87+56.27+34.83+28.17+3.23
  18. 18:  83.95+66.61+54.77+38.59+28.17+3.23
  19. 19:  80.26+78.01+56.27+43.11+12.9+4.77
  20. 20:  80.26+64.04+54.99+43.11+28.17+4.75
  21. 21:  80.26+56.27+54.99+54.77+12.29+7.22+4.77+4.75
  22. 22:  80.26+56.27+54.99+38.59+28.17+12.29+4.75
  23. 23:  79.08+78.01+54.77+38.59+12.9+7.22+4.75
  24. 24:  79.08+77.26+54.99+43.11+12.9+4.75+3.23
  25. 25:  79.08+68.87+66.61+43.11+12.9+4.75
  26. 26:  79.08+64.04+54.99+38.59+28.17+7.22+3.23
  27. 27:  79.08+54.99+54.77+43.11+28.17+7.22+4.75+3.23
  28. 28:  78.01+77.26+64.04+43.11+12.9
  29. 29:  78.01+77.26+56.27+38.59+12.9+12.29
  30. 30:  78.01+68.87+54.99+34.83+28.17+7.22+3.23
  31. 31:  78.01+64.04+54.77+43.11+28.17+7.22
  32. 32:  78.01+64.04+43.11+38.59+34.83+7.22+4.77+4.75
  33. 33:  78.01+56.27+54.77+38.59+28.17+12.29+7.22
  34. 34:  77.26+64.04+54.99+54.77+12.29+7.22+4.75
  35. 35:  77.26+56.27+54.99+43.11+28.17+12.29+3.23
  36. 36:  77.26+54.77+43.11+34.83+28.17+12.9+12.29+7.22+4.77
  37. 37:  68.87+66.61+56.27+43.11+28.17+12.29
  38. 38:  68.87+64.04+54.77+38.59+28.17+12.9+4.75+3.23
  39. 39:  68.87+56.27+54.77+34.83+28.17+12.9+12.29+7.22
  40. 40:  66.61+64.04+54.99+43.11+38.59+4.75+3.23
  41. 41:  66.61+56.27+54.99+43.11+34.83+12.29+7.22
  42. 42:  64.04+54.99+54.77+38.59+34.83+12.9+7.22+4.75+3.23
复制代码

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
22 [报告]
发表于 2015-03-03 15:32 |只看该作者
把这些数排序以后可以发现最小的十一个数的和已经大于275.32了,而最大的两个数的和还小于275.32。
所以如何一个符合条件的组合,即和等于275.32的组合,一定由3-10个数组成。
少于3个数或者超过10个数的组合就不用穷举了,可以直接排除。

求职 : 机器学习
论坛徽章:
79
2015年亚洲杯纪念徽章
日期:2015-05-06 19:18:572015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之阿尔纳斯尔
日期:2015-09-07 09:30:232015亚冠之萨济拖拉机
日期:2015-10-21 08:26:3915-16赛季CBA联赛之浙江
日期:2015-12-30 09:59:1815-16赛季CBA联赛之浙江
日期:2016-01-10 12:35:21技术图书徽章
日期:2016-01-15 11:07:2015-16赛季CBA联赛之新疆
日期:2016-02-24 13:46:0215-16赛季CBA联赛之吉林
日期:2016-06-26 01:07:172015-2016NBA季后赛纪念章
日期:2016-06-28 17:44:45黑曼巴
日期:2016-06-28 17:44:4515-16赛季CBA联赛之浙江
日期:2017-07-18 13:41:54
23 [报告]
发表于 2015-03-03 16:01 |只看该作者
漂亮,这样可以一下子消除好多根本就不可能的选择,提高了效率。回复 22# bikkuri


   

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
24 [报告]
发表于 2015-03-03 16:30 |只看该作者
本帖最后由 jason680 于 2015-03-03 16:36 编辑

回复 16# reyleon

It's floating number(Floating-Point Arithmetic) issue
http://zh.wikipedia.org/zh-cn/IEEE_754

There is no issue for integer number


$ time awk -vv=275.32 'function x(v,s,c,t,p,y){if(t>v)return;if(s-c>1)while(++p<=NR-s+c)x(v,s,c+1,t+a[p],p,y a[p]"("p")+");else{if(t+max<v||v<t+min)return;while(++p<=NR){if(v==t+a[p]){cnt++;print v"="y a[p]"("p")"}}}}{$1*=100;a[NR]=$1;N=NR;if(NR==1)max=min=$1;if(max<$1)max=$1;if(min>$1)min=$1;printf $1"("NR"), "}END{v*=100;print "\nv="v", max="max", min="min;for(n=1;n<=NR;n++)x(v,n);print "got total:"cnt}' FILE
4311(1), 5627(2), 8800(3), 722(4), 477(5), 3859(6), 9509(7), 6404(8), 6661(9), 5499(10), 5477(11), 3483(12), 323(13), 475(14), 8026(15), 1290(16), 7726(17), 2817(18), 7801(19), 6887(20), 8395(21), 1229(22), 7908(23),
v=27532, max=9509, min=323
27532=4311(1)+6404(8)+1290(16)+7726(17)+7801(19)
...
27532=477(5)+3859(6)+9509(7)+3483(12)+323(13)+475(14)+1290(16)+6887(20)+1229(22)
got total:42

real        0m2.960s
user        0m1.544s
sys        0m0.096s


It can be solved with small error


$ time awk -vv=275.32 'function abs(x){return(x>0?x:-x)}function x(v,s,c,t,p,y){if(t>v)return;if(s-c>1)while(++p<=NR-s+c)x(v,s,c+1,t+a[p],p,y a[p]"("p")+");else{if(t+max<v||v<t+min)return;while(++p<=NR){if(abs(v-t-a[p])<10^-6){cnt++;print v"="y a[p]"("p")"}}}}{a[NR]=$1;N=NR;if(NR==1)max=min=$1;if(max<$1)max=$1;if(min>$1)min=$1;printf $1"("NR"), "}END{print "\nmax="max", min="min;for(n=1;n<=NR;n++)x(v,n);print "got total:"cnt}' FILE
43.11(1), 56.27(2), 88(3), 7.22(4), 4.77(5), 38.59(6), 95.09(7), 64.04(8), 66.61(9), 54.99(10), 54.77(11), 34.83(12), 3.23(13), 4.75(14), 80.26(15), 12.9(16), 77.26(17), 28.17(18), 78.01(19), 68.87(20), 83.95(21), 12.29(22), 79.08(23),
max=95.09, min=3.23
275.32=43.11(1)+64.04(8)+12.9(16)+77.26(17)+78.01(19)
...
275.32=4.77(5)+38.59(6)+95.09(7)+34.83(12)+3.23(13)+4.75(14)+12.9(16)+68.87(20)+12.29(22)
got total:42

real    0m3.440s
user    0m1.780s
sys    0m0.108s

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
25 [报告]
发表于 2015-03-03 16:52 |只看该作者
回复 24# jason680


    对你的敬仰犹如滔滔井水连绵不绝又如黄河泛滥一发不可收拾

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
26 [报告]
发表于 2015-03-03 16:54 |只看该作者
回复 24# jason680


    有人想问你, 你的职业是与 IT 相关的么?

论坛徽章:
0
27 [报告]
发表于 2015-03-03 17:01 |只看该作者
回复 25# reyleon

确实是大牛啊,佩服,我理解不了

求职 : 机器学习
论坛徽章:
79
2015年亚洲杯纪念徽章
日期:2015-05-06 19:18:572015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之阿尔纳斯尔
日期:2015-09-07 09:30:232015亚冠之萨济拖拉机
日期:2015-10-21 08:26:3915-16赛季CBA联赛之浙江
日期:2015-12-30 09:59:1815-16赛季CBA联赛之浙江
日期:2016-01-10 12:35:21技术图书徽章
日期:2016-01-15 11:07:2015-16赛季CBA联赛之新疆
日期:2016-02-24 13:46:0215-16赛季CBA联赛之吉林
日期:2016-06-26 01:07:172015-2016NBA季后赛纪念章
日期:2016-06-28 17:44:45黑曼巴
日期:2016-06-28 17:44:4515-16赛季CBA联赛之浙江
日期:2017-07-18 13:41:54
28 [报告]
发表于 2015-03-03 17:04 |只看该作者
估计可能不相关,不然怎么这么牛逼呢?回复 26# reyleon


   

论坛徽章:
11
CU十二周年纪念徽章
日期:2013-10-24 15:41:342015年辞旧岁徽章
日期:2015-03-03 16:54:15丑牛
日期:2015-01-14 10:36:40技术图书徽章
日期:2015-01-12 15:46:11白羊座
日期:2014-11-14 09:35:36狮子座
日期:2014-10-30 13:18:49巳蛇
日期:2014-10-11 12:52:08子鼠
日期:2014-09-28 14:11:06双鱼座
日期:2014-04-22 13:05:48午马
日期:2014-02-11 17:58:002015年迎新春徽章
日期:2015-03-04 09:55:28
29 [报告]
发表于 2015-03-03 17:05 |只看该作者
很好奇,坐等jason680大神分享职业。。

论坛徽章:
11
CU十二周年纪念徽章
日期:2013-10-24 15:41:342015年辞旧岁徽章
日期:2015-03-03 16:54:15丑牛
日期:2015-01-14 10:36:40技术图书徽章
日期:2015-01-12 15:46:11白羊座
日期:2014-11-14 09:35:36狮子座
日期:2014-10-30 13:18:49巳蛇
日期:2014-10-11 12:52:08子鼠
日期:2014-09-28 14:11:06双鱼座
日期:2014-04-22 13:05:48午马
日期:2014-02-11 17:58:002015年迎新春徽章
日期:2015-03-04 09:55:28
30 [报告]
发表于 2015-03-03 17:05 |只看该作者
很好奇,坐等jason680大神分享职业。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP