获取两组数值乘机最大的一组

赵元龙 2017-08-24 06:17:46
有数组 Arr 保存着一组不定量的数值,最少四个
使得 Arr 中保存的数值分别保存至 ArrA, ArrB 中且两个数组中都至少有两个数值
ArrA 中的数值相乘得到 NumA, ArrB 中的数值相乘得到 NumB
最终得到 NumA 与 NumB 最接近的 ArrA 与 ArrB 的组合
源代码该如何写
...全文
1573 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵元龙 2017-09-07
  • 打赏
  • 举报
回复
有了思路什么都简单了
赵元龙 2017-09-07
  • 打赏
  • 举报
回复
真没想到,最简单的做法就是三角排序法,寥寥几行就解决问题了,搞了我这么久就一直没转过弯来.
舉杯邀明月 2017-09-03
  • 打赏
  • 举报
回复
搞了这么久,楼主还是没有把问题说清楚! 1. 你的“一组数”,是不是“平分”为两组?(当然如果是单数,肯定其中一组会多出1个) 2. 你要“乘积最大”,就把其中的“最大的一半数据”提取出来,不就行了? 3. 如果是符合上述第“2.”条的,先排序、后选数,这是最简单的做法。   并且也极可能是最高效的做法(当然“排序算法”不能用低效率的)。
赵元龙 2017-09-02
  • 打赏
  • 举报
回复
最终效果举个例子 {11 12 13 14 15 16 17 18} 迭代返回 14 15 13 16 12 17 11 18 与之类似吧,值差小的排在前面
赵元龙 2017-09-02
  • 打赏
  • 举报
回复
说实话我很少直接要代码的,这次确实是一直想不出个有意义的思路,没有思路怎么可能拿得出代码呢!
X-i-n 2017-08-31
  • 打赏
  • 举报
回复
这问题本质就是数数 问题等于:N个数,分成两个组,一共有多少种可能(然后再排除掉不符合要求的,题目中的排除条件是,每组元素均大于1),得到分组再求乘积就行。 每个数有两种分法,也就是两种可能,所以不做排除时的结果,可以通过2^n得到。再进一步,把每个元素,看成是一个二进制位,这个问题就直接转化成简单的数数问题了,从所有数位全0,一直数到所有数位全1,每个数就是一种组合。 话说回来为啥这个帖发在非技术区?下面是示例代码,但是这个算法有一个坑,需要修正一个地方,如果你能发现的话再讨论吧。上来就要源码是非常不友好的行为,完全没有自己的思考直接伸手,这算什么呢?你的思路是什么样的,解决这个问题你做过哪些思考?真正应该问的地方,是你解决这个问题的时候碰到的障碍。不过如果从起点到终点每一步都是障碍,那就完全没有讨论的意义了。
sub calc()
dim a() as integer, a1 as new collection, a2 as new collection
for i = 0 to 2^(ubound(a)+1)-1
'对每种组合做计算
next i
end sub

function grouping(num as integer) as string
'把这个数辗转模2,得到每个数位上的值,某数位是0就代表分到组1,是1代表分到组2,最后排序并拼出一个字符串来
end function
function multiply(num as integer) as long
'把这个数辗转模2,得到每个数位上的值,分完组以后,求两个分组的积,并求出差的绝对值
end function 
赵元龙 2017-08-31
  • 打赏
  • 举报
回复
这个算法中排序是没有意义的,而且原题的要求是在最后阶段再根据值差由小至大依次输出所有可能的组合
赵元龙 2017-08-31
  • 打赏
  • 举报
回复
所以才来发帖求助的
赵元龙 2017-08-31
  • 打赏
  • 举报
回复
我希望用穷举法,关键是我一直没有这方面的灵感写不出代码来
of123 2017-08-25
  • 打赏
  • 举报
回复
以一共 4 个数为例,最大和最小的放入一个数组,中间的两个放入另一数组。
of123 2017-08-25
  • 打赏
  • 举报
回复
1 首先对 Arr 中的数值排序; 2 按序将 Arr 中的数,相间地放入 ArrA 和 ArrB。
舉杯邀明月 2017-08-24
  • 打赏
  • 举报
回复
为何我感觉楼主的需求有点“文不对题”呢??? 最简单的做法,就是“穷举法”,没什么太高的难度,运行效率不高而已。 如果数据数量不是特别太多,并且对“速度”没有极高要求,还是可以接受的。 楼主还是把需求说清楚点吧……

742

社区成员

发帖
与我相关
我的任务
社区描述
VB 版八卦、闲侃,联络感情地盘,禁广告帖、作业帖
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧