求一算法思路

五维思考 2018-08-24 06:12:27


请各位指点
...全文
176 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
五维思考 2018-08-24
  • 打赏
  • 举报
回复
感谢xuzuning大神的回复,这段代码短小精悍,让我受益匪浅
可能是我没有表述清楚,右侧的模拟结果也不具代表性(其实我是不知道正确的结果是啥),你的这代码未考虑数量较多的和较少的与哪个组合更趋于合理,举个极端点的例子:物品有100种,其中B和C数量分别为1和2,那么它们如何组合才能更好的符合2、3的要求呢?
xuzuning 2018-08-24
  • 打赏
  • 举报
回复
            var a = new List<Goods>();
for (var i = 0; i < 23; i++) a.Add(new Goods() { Name = "A", Price = 115 });
for (var i = 0; i < 9; i++) a.Add(new Goods() { Name = "B", Price = 47 });
for (var i = 0; i < 19; i++) a.Add(new Goods() { Name = "C", Price = 98 });
for (var i = 0; i < 18; i++) a.Add(new Goods() { Name = "D", Price = 168 });
for (var i = 0; i < 7; i++) a.Add(new Goods() { Name = "E", Price = 76 });

var d = new Dictionary<string, Goods>();
foreach (var x in a.Combination(4))
{

if (x.Distinct(y => y.Name).Count() == 4)
{
var k = string.Join("", x.Select(y => y.Name));
var p = x.Select(t => t.Price).Sum();
if (!d.ContainsKey(k)) d[k] = new Goods() { Name = k, Price = p };
d[k].Num++;
}
}
foreach (var x in d.Values.OrderBy(y=>y.Price))
{
Console.WriteLine("{0} {1} {2}", x.Name, x.Num, x.Price);
}
ABCE 27531 336
BCDE 21546 389
ABDE 26082 406
ABCD 70794 428
ACDE 55062 457

110,566

社区成员

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

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

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