题目:用100文钱买来100只鸡,公鸡5文钱一只,母鸡3文钱一只,小鸡1文钱3只。问:在这100只鸡中,公鸡、母鸡、小鸡各是多少只?
按照传统的解法,我们可以这么做:
static void Main(string[] args)
{
for (int x = 0; x <= 100 / 5; x++)
{
for (int y = 0; y <= 100 / 3; y++)
{
for (int z = 0; z <= 100; z++)
{
if ((5 * x + 3 * y + z / 3 == 100) && (x + y + z == 100) && (z % 3 == 0))
{
Console.WriteLine("x:" + x + " y:" + y + " z:" + z);
break;
}
}
}
}
}
那如果我们用linq的写法,可以这么写:
static void Main(string[] args)
{
var query = from 公鸡 in Enumerable.Range(0, 20)
let m1 = 100 - 公鸡 * 5
from 母鸡 in Enumerable.Range(0, m1 / 3)
where 公鸡 + 母鸡 <= 100
let m2 = m1 - 母鸡 * 3
where m2 >= 0
let 小鸡 = m2 * 3
where 公鸡 + 母鸡 + 小鸡 == 100
select new { 公鸡, 母鸡, 小鸡 };
int cn = 0;
foreach (var x in query)
Console.WriteLine("方案{0}: 公鸡={1},母鸡={2},小鸡={3}", ++cn, x.公鸡, x.母鸡, x.小鸡);
Console.ReadKey();
}
答案:
方案1: 公鸡=0,母鸡=25,小鸡=75
方案2: 公鸡=4,母鸡=18,小鸡=78
方案3: 公鸡=8,母鸡=11,小鸡=81
方案4: 公鸡=12,母鸡=4,小鸡=84
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。