王cb 2017-10-19 09:01 采纳率: 0%
浏览 906

用一行linq穷举一个n位数,q

/位数

int digit = 5;

//每一位再最大值如十进制就是10十六进制就是16=>f

int number = 10;

//关键解法

List> c = System.Linq.Enumerable.Repeat(System.Linq.Enumerable.Range(0, number), digit) .Aggregate(System.Linq.Enumerable.Repeat(new List(), number), (ir, ot) => ir.SelectMany(h => ot.Select(j => h.Concat(new List() { j }).ToList()))).ToList();

//验证

foreach (List a in c)
{
Console.Write(string.Join("",a) + "\r\n");
}
Console.Write(c.Count);

Console.ReadKey();

要求写出更简洁的写法,并且提供2个参数digit和number ,用一行linq实现,结贴给分

  • 写回答

2条回答 默认 最新

  • threenewbee 2017-10-19 11:04
    关注

    不知道number是干嘛的
    Enumerable.Range(0, (int)Math.Pow(10.0,(double)digit) - 1).Where(x => x > (int)Math.Pow(10.0,(double)digit - 1))

    评论

报告相同问题?

悬赏问题

  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器