社区
C#
帖子详情
小算法:反求一个值是已知数组中某几个元素值的和
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
打赏
收藏
小算法:反求一个值是已知数组中某几个元素值的和
如题: int a = 11; int[] x = new int[]{2,7,5,3,4}; 求 11 = 2 + 5 + 4;或者 11 = 7 + 4;
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
自已顶呀。
(
算法
)求
数组中
数字组合(可多
值
组合)相加最接近目标数的组合(可能多个)
今天没事,撸一道
算法
题 题目要求: 给出
一个
升序排序的可能重复
值
的数字数组和
一个
目标
值
其中目标
值
大于
数组中
最小数,求
数组中
数字组合(可多
值
组合)相加最接近目标数的组合(可能多个) 不考虑空间复杂度,效率最优的
算法
; 样例: 数组为[3,4,8],目标
值
为9,最接近组合为[8]; 这道题我的解题思路是: 1.先得到数组的全部不重复不为空的子集 2.将子集的和作为key,子集的
元素
作为value存进map 3.将子集的和与给定
值
求
数组中
多个数相加等于某一
值
主要思想:排序+两端逼近 内容:排序使得整个数组有序从而可以使用双指针从数组的两端向中间逼近所需要的
值
7、3Sum 顾名思义,求
数组中
3个数相加等于某一特定的数自己写了
一个
似乎是O(n^2) 汗颜 在Two Sum的引导下,我成功使用了unordered_map 然而在run code的时候就发现了
一个
无法解决的问题: Your input [-1,0,1,2,-1,-4] Your a
经典
算法
题:寻找
数组中
第k大的
元素
这算是一道相当经典的
算法
题了:在长度为N的乱序
数组中
寻找第k(n>=k)大的
元素
。扩展思考:如何处理
数组中
的重复
元素
?比如,对于数组a={1,2,2,2,3,3,3},第二大的
元素
应该是3还是2呢?本文作这种分类:如果第二大的
元素
是3,说明在处理第k大的
元素
时不处理重复的数据,也就是将原数组进行降序排序后,下标为k-1的
元素
。这种处理方法称之为“不处理重复数据方法”;如果第二大的
元素
是2,说...
数组中
任意
几个
元素
的和是否等于m(递归)
1.问题描述
已知
一个
一维数组,又
已知
一个
整数m。如果能使数组a中
几个
元素
之和等于m,则输出Yes,否则输出No。 样例输入:3 3 1 6 6 样例输出:Yes 2.
算法
分析 其实这道题目意思就是,假定数组为nums,就是让我们判断能否从数组nums取任意数使其和为m 对于nums中任意
元素
nums[n]...
有15个数存放在
一个
数组中
,输入
一个
数,要求用折半查找法找出该数是
数组中
第
几个
元素
的
值
。如果该数不在
数组中
,则输出“无此数”。以15个数用赋初
值
的方法在程序中给出。要找的数用scanf函数输入。
折半查找法:在计算机科学中,折半搜索(英语:half-interval search),也称二分搜索(英语:binary search)、对数搜索(英语:logarithmic search),是一种在有序
数组中
查找某一特定
元素
的搜索
算法
搜索过程从数组的中间
元素
开始,如果中间
元素
正好是要查找的
元素
,则搜索过程结束;如果某一特定
元素
大于或者小于中间
元素
,则在数组大于或小于中间
元素
的那一半中查找,而且跟开始一样从中间
元素
开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索
算法
每一次比较都使搜索范围缩小一
C#
110,546
社区成员
642,561
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章