求一.NET算术算法.

求一个NET算术算法,要求在N个数字中,对二个或多个数字做任意组合,使每个组合的值大于99且与99尽量相近,从而产生最多符合条件的组合。

例如有数字:30,70,55,60 四个数字,则我们可以直观的看出,30+70组合,55与60组合是最佳组合,产生了两组符合条件(值大于等于99)的组合。其他组合方式则只能产生一组。

但当有N个数字的时候,例如20个数值,怎么处理呢~?


饮歌长啸
浏览 532回答 2
2回答

德玛西亚99

先说个想法,把N数字从小到大排序,然后最大的加上最小的跟99比较,如果小于99, 就加第二小的如果大于或等于99,就算一个组合,然后就倒数第二大的加小的,在比较,依此类推只是个想法,还没写程序。

牛魔王的故事

二楼的方法是可行的。优化的方法用:双向二分查找,后向两边缩放查找。 O(nlogn)
打开App,查看更多内容
随时随地看视频慕课网APP