求一个数组中N个数的总和

snowflying928 2010-04-27 09:51:05
各位好,有个问题请教:
在一个float类型的数组中存放一组数M(0,1000] 从这个M个数中取出N个满足N个数之和在Min 和Max之间(Min和Max是常数)
求这个N个数。(如果有多个组最多输出5组)。
...全文
624 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
Justin-Liu 2010-04-28
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 nextgates 的回复:]
引用 6 楼 vip__888 的回复:
这类的算法正是锻炼新手的,楼主自己想过了吗?
一来就要代码,恕我直言,你不适合学编程。

恕我直言,你只能做打工的,没你这么贬低人的。。。。。。
[/Quote]
不要直言 他还小 不要被头像误导
nextgates 2010-04-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 vip__888 的回复:]
这类的算法正是锻炼新手的,楼主自己想过了吗?
一来就要代码,恕我直言,你不适合学编程。
[/Quote]
恕我直言,你只能做打工的,没你这么贬低人的。。。。。。
段传涛 2010-04-28
  • 打赏
  • 举报
回复
没有用list 数组 11点我们开会 下面代码你 自己扩展把 。
protected void Button2_Click(object sender, EventArgs e)
{
float[] myarry = new float[1000];
int n = 0;
float sum = 0;
for (int i = 0; i < myarry.Length; i++)
{
myarry[n] = i;
n++;
}
//求和
for (int j = 0; j <= 10; j++)
{
sum += myarry[j];
}
}
liaoyukun111 2010-04-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 vip__888 的回复:]
这类的算法正是锻炼新手的,楼主自己想过了吗?
一来就要代码,恕我直言,你不适合学编程。
[/Quote]
个人也觉得比较入门 最好自己写一个再出来要代码
段传涛 2010-04-28
  • 打赏
  • 举报
回复
昨天我瞎写的 今天我用代码试试 。我喜欢写这些 。呵呵
先帮顶。
手抓宝 2010-04-28
  • 打赏
  • 举报
回复
Linq
nigerenz 2010-04-28
  • 打赏
  • 举报
回复
如果这个数组里面都是正数,那肯定一组也不会有,因为不管几个数相加,都会大于MAX的数,所以要想得到你说的结果,这数组里面肯定要有负数,或者说这组数里面肯定要有负数才行。有负数的话,问题就简单多了。
nigerenz 2010-04-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 snowflying928 的回复:]
引用 5 楼 lcl_data 的回复:

先排序,
找最小的连续n个数之和是在min - max之间的。

这个N个数不是连续的。
可能是第一个加上最后一个就满足要求了呢
我把问题简化一下说的更明白一点:
原始数据:
1,2,3,4,5 要求找出满足和为6的数的组合
很容易就可以求出(1,5),(2,4),(1,2,3)三组满足要求。
我开始的想法是:
1.把数据从小到大……
[/Quote]


学习
snowflying928 2010-04-28
  • 打赏
  • 举报
回复
up,回复还太短了。。。。。
xujiejuanjuan 2010-04-28
  • 打赏
  • 举报
回复
帮顶!!!!!!!!!!!!!!
Peter200694013 2010-04-28
  • 打赏
  • 举报
回复
mark...
myhope88 2010-04-28
  • 打赏
  • 举报
回复
除了想到循环去处理之外,就没想到其他更好的办法了
snowflying928 2010-04-28
  • 打赏
  • 举报
回复
还有一点,我开始说的不对,N不是一个固定的数,只要满足要求的数即可。如果一个数满足,那么N = 1
两个数满足N = 2;
这个问题来源于这样一个情况:
我们的会计每个月要报关,会从一堆单子中挑出满足总和,误差在一定范围内的单子比如(-500+500万 +500)
我把问题更一般化了。要求只要找出一组就可以了,我现在是想找出所有的组合。
takako_mu 2010-04-28
  • 打赏
  • 举报
回复
不思考不是個好習慣。
snowflying928 2010-04-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lcl_data 的回复:]

先排序,
找最小的连续n个数之和是在min - max之间的。
[/Quote]
这个N个数不是连续的。
可能是第一个加上最后一个就满足要求了呢
我把问题简化一下说的更明白一点:
原始数据:
1,2,3,4,5 要求找出满足和为6的数的组合
很容易就可以求出(1,5),(2,4),(1,2,3)三组满足要求。
我开始的想法是:
1.把数据从小到大排序
2.取第一数做为开始数字,先求两个数的和,1+ 2, 1+ 3 等
3.再求三个数的和 1+2+3, 1+2 + 4,。。。。
4,以此下去 求到包含第一个元素的所有元素的和
5取第二个元素为开始数字 重复2.3.4的步骤。
这样明显效率很低。
应该还有好的方法。
不求代码,只求思路。
感谢上面各位。如果有类似的算法,告诉参考也可以。
vip__888 2010-04-28
  • 打赏
  • 举报
回复
这类的算法正是锻炼新手的,楼主自己想过了吗?
一来就要代码,恕我直言,你不适合学编程。
snowflying928 2010-04-28
  • 打赏
  • 举报
回复
此贴问题另开一帖,请大家移步谢谢
http://topic.csdn.net/u/20100428/13/d72ed6b6-9dbf-46c2-91a9-b376f158a3a4.html
此贴会结贴不再讨论。
十八道胡同 2010-04-27
  • 打赏
  • 举报
回复
先排序,
找最小的连续n个数之和是在min - max之间的。
段传涛 2010-04-27
  • 打赏
  • 举报
回复
private void rearry(int n)
{
1,定义数组farry
2,写入数据
float stemp =0;
for(int i =0; i <n ; i++)
{
stemp += farry[i];
}
}
yufenghua 2010-04-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 coregao0220 的回复:]

(1)先把数组升序排列;
(2)取出前N个,再依次向后取。
[/Quote]
比我的强多了。。。不过还是可以采用渐进的方式来取值 先排序。。。
加载更多回复(2)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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