您好,登錄后才能下訂單哦!
題目:用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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。