小算法:反求一个值是已知数组中某几个元素值的和

OriesMap 2005-08-10 12:22:50
如题:

int a = 11;
int[] x = new int[]{2,7,5,3,4};

求 11 = 2 + 5 + 4;或者 11 = 7 + 4;
...全文
150 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ybzsu 2005-08-25
  • 打赏
  • 举报
回复
yinshuhai(因数还)的算法好象有点问题
你怎么知道最小数肯定在最后组合中?
比如7=3+4,x[]={2,3,4},那么7=2+?

OriesMap 2005-08-25
  • 打赏
  • 举报
回复
问题已解决.
是群的高手帮助解决的.

还是谢谢论坛上的各位.
lovevsnet 2005-08-24
  • 打赏
  • 举报
回复
先记一下,有空帮你再找好的算法
OriesMap 2005-08-24
  • 打赏
  • 举报
回复
再顶一把.中间有几天未能来得及搞这个问题.
今天来弄,结果还是感觉很麻烦.

请问谁做过贪婪算法?我这个就好比是贪婪算法的深入版本呀.
cdo 2005-08-11
  • 打赏
  • 举报
回复
这个你得循环来得到呀.
OriesMap 2005-08-11
  • 打赏
  • 举报
回复
yinshuhai(因数还):

谢谢因数还呀。你这确实是一个思路。比我原来想的要好多了。我先试一下吧。
yinshuhai 2005-08-11
  • 打赏
  • 举报
回复
我说下思路:
1.用int b=a-x[0]
2。判断b是否为x中剩下的最小的值,如果有相等地就是一个组合。
3。如果b是最小就无解。
4。如果有小于b的x[i],,令a=b,递归调用,减去比b小值值x[i],并在剩下的x值中找个与b相等的就是个组合了。依次递归看看!
OriesMap 2005-08-11
  • 打赏
  • 举报
回复
我知道。难道除了遍历与组合就没有别的办法了吗?

其实我这个数组中最多也就是十个元素。主要是想给客户一个智能化的匹配。
OriesMap 2005-08-11
  • 打赏
  • 举报
回复
还沉得很快咦。

不过要回家了。
OriesMap 2005-08-11
  • 打赏
  • 举报
回复
呵呵。
coveking 2005-08-10
  • 打赏
  • 举报
回复
好费神,友情UP
Tenner 2005-08-10
  • 打赏
  • 举报
回复
这个算法并不是一个小算法啊,想要考虑所有的情况是很困难的
比如你的数组有100个元素,那么需要考虑的情况个数是 C(100, 1) + C(100, 2) + ... + C(100, 100),就算加上条件判断也需要考虑非常多的情况。
如果指定求两个或三个的和还有可能,不过循环的次数也是很多的
OriesMap 2005-08-10
  • 打赏
  • 举报
回复
小问题,也没有人能帮我解决。

其实我这是有用的一个想法。比如我收到材料供应商的增值税票,我要自动匹配这张发票是哪几张材料入库单的发票。我就需要用反求来自动匹配的。

小问题,希望大家能帮助一下。
OriesMap 2005-08-10
  • 打赏
  • 举报
回复
自已顶呀。

110,546

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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