各位大侠,小弟在工作中遇到了难题求大家帮忙
小弟在工作中遇到了个棘手的问题,以前读书的时候学过VB编程只是简单的大学里应付考试用的,现在基本上全还给老师了。所以在这里请大家帮个忙!我遇到的问题是,例如一组数据: 20.3 23 34 46 123 145 174 173.9 220.3 237.2 198.3 183.2 177.3 现在这样的数值从20多到300左右含小数点的数值,怎样把这些数值中的几个数值相加,结果是798.8到800.9范围内的数,那几个相加的数值要显示出来。数值用完就不能重复使用了。(最好是把所有数值输入进去求出结果分成一组一组的显示出来)。在这里小弟先谢谢大家了! QQ 315829567 邮箱 langzexuelong@sina.com 谢谢各位大虾 工作 编程 数据 --------------------编程问答--------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var data = "20.3 23 34 46 123 145 174 173.9 220.3 237.2 198.3 183.2 177.3".Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Select(x => double.Parse(x));
var result = foo(data, new double[] { }, 798.8, 800.9);
foreach (var item in result)
{
Console.WriteLine("sum: {0}, items: {1}", item.Sum(), string.Join(", ", item.Select(x => x.ToString())));
}
}
static IEnumerable<IEnumerable<double>> foo(IEnumerable<double> data, IEnumerable<double> includenum, double min, double max)
{
double includenum_sum = includenum.Sum();
if (includenum.Sum() > min && includenum_sum < max) yield return includenum;
if (includenum.Sum() < min)
{
foreach (double d in data.Except(includenum).Where(x => includenum_sum + x < max && (includenum.Count() == 0 || x > includenum.Max())))
{
foreach (var item in foo(data, includenum.Concat(new double[] { d }), min, max))
{
yield return item;
}
}
}
}
}
}
sum: 799.4, items: 20.3, 23, 34, 46, 145, 173.9, 174, 183.2
sum: 799.8, items: 20.3, 23, 34, 145, 174, 183.2, 220.3
sum: 799.7, items: 20.3, 23, 34, 145, 173.9, 183.2, 220.3
sum: 800.8, items: 20.3, 23, 34, 173.9, 174, 177.3, 198.3
sum: 800.8, items: 20.3, 23, 46, 123, 174, 177.3, 237.2
sum: 800.7, items: 20.3, 23, 46, 123, 173.9, 177.3, 237.2
sum: 800.8, items: 20.3, 34, 46, 123, 174, 183.2, 220.3
sum: 800.7, items: 20.3, 34, 46, 123, 173.9, 183.2, 220.3
sum: 800.8, items: 20.3, 34, 46, 145, 174, 183.2, 198.3
sum: 800.7, items: 20.3, 34, 46, 145, 173.9, 183.2, 198.3
sum: 799.8, items: 20.3, 34, 173.9, 174, 177.3, 220.3
sum: 799.8, items: 20.3, 46, 145, 174, 177.3, 237.2
sum: 799.7, items: 20.3, 46, 145, 173.9, 177.3, 237.2
sum: 799.1, items: 20.3, 46, 174, 177.3, 183.2, 198.3
sum: 799, items: 20.3, 46, 173.9, 177.3, 183.2, 198.3
sum: 799.1, items: 20.3, 123, 198.3, 220.3, 237.2
sum: 800.1, items: 20.3, 145, 177.3, 220.3, 237.2
sum: 799.4, items: 20.3, 177.3, 183.2, 198.3, 220.3
sum: 799.7, items: 23, 34, 145, 177.3, 183.2, 237.2
sum: 799.1, items: 23, 46, 145, 173.9, 174, 237.2
sum: 799.5, items: 23, 145, 174, 220.3, 237.2
sum: 799.4, items: 23, 145, 173.9, 220.3, 237.2
sum: 798.9, items: 34, 46, 123, 177.3, 198.3, 220.3
sum: 800.7, items: 34, 46, 123, 177.3, 183.2, 237.2
sum: 800.5, items: 34, 173.9, 174, 198.3, 220.3
sum: 800.5, items: 46, 123, 174, 220.3, 237.2
sum: 800.4, items: 46, 123, 173.9, 220.3, 237.2
sum: 800.5, items: 46, 145, 174, 198.3, 237.2
sum: 800.4, items: 46, 145, 173.9, 198.3, 237.2
sum: 800.8, items: 46, 174, 177.3, 183.2, 220.3
sum: 800.7, items: 46, 173.9, 177.3, 183.2, 220.3
sum: 799.1, items: 123, 145, 173.9, 174, 183.2
sum: 800.8, items: 145, 198.3, 220.3, 237.2
Press any key to continue . . . --------------------编程问答-------------------- 版主可否私聊 教教我 我现在快愁死了,以前读书的时候学过VB简单的操作,现在全还给老师了。QQ: 315829567 我的联系方式 --------------------编程问答--------------------
下载一个C#,新建一个控制台程序,贴上上面的代码,即可得到结果
下载地址:http://go.microsoft.com/?linkid=9709940 --------------------编程问答-------------------- 用C语言吗? 还有就是里面的数字不能重复使用怎么办 --------------------编程问答--------------------
你看结果中哪个不对。 --------------------编程问答-------------------- 我看明白了版主 那是不同的数相加 同一个结果 太感谢你了! 我是直接将代码复制过去就可以吗 --------------------编程问答--------------------
对的。
是C#,不是C,别搞错了。至少需要2010版本,也可以是2012 2013。 --------------------编程问答-------------------- 我直接用你给我连接下载的 谢谢版主 十分的感谢 --------------------编程问答-------------------- 版主我怎么运行不对呀, 你可以远程帮我吗? 我的QQ315829567
--------------------编程问答--------------------
你最好下这个:http://go.microsoft.com/?linkid=9709969
前面那个是在线安装的,这个是离线版本的。下载好以后解压缩直接安装。 --------------------编程问答-------------------- 我的结果显示的那个 窗口怎么显示 --------------------编程问答-------------------- 按ctrl+f5 --------------------编程问答-------------------- 十分感谢 版主 收徒弟一拜 --------------------编程问答-------------------- 版主能否设计个固定的窗口,每次使用时只需要把数字输进去,然后输出每组数据。 --------------------编程问答-------------------- 这么懒呀,这个自个弄下不就好了 --------------------编程问答-------------------- 学习。。。。。 --------------------编程问答--------------------
这个,你可以自己尝试改写,有不懂的欢迎来论坛提问。只能授人以渔,授人以鱼的事情是没法做的。 --------------------编程问答-------------------- 是我确实不怎么会鼓捣 所以在这里请教大家跟大家学习下 --------------------编程问答--------------------
找本书先入门下吧。 --------------------编程问答-------------------- 我现在是急用在工作上,版主推荐本书吧,多学学以后用得到
补充:VB , 基础类