“雞翁一值錢5,雞母一值錢3,雞雛三值錢1。百錢買百雞,問雞翁、母、雛各幾何?”java窮舉法解題
阿新 • • 發佈:2019-01-30
窮舉法概述(這是引用百度的介紹)
窮舉法是一種針對於密碼的破譯方法。這種方法很像數學上的“完全歸納法”並在密碼破譯方面得到了廣泛的應用。簡單來說就是將密碼進行逐個推算直到找出真正的密碼為止。比如一個四位並且全部由數字組成其密碼共有10000種組合,也就是說最多我們會嘗試9999次才能找到真正的密碼。利用這種方法我們可以運用計算機來進行逐個推算,也就是說用我們破解任何一個密碼也都只是一個時間問題。
當然如果破譯一個有8位而且有可能擁有大小寫字母、數字、以及符號的密碼用普通的家用電腦可能會用掉幾個月甚至更多的時間去計算,其組合方法可能有幾千萬億種組合。這樣長的時間顯然是不能接受的。其解決辦法就是運用字典,所謂“字典”就是給密碼鎖定某個範圍,比如英文單詞以及生日的數字組合等,所有的英文單詞不過10萬個左右這樣可以大大縮小密碼範圍,很大程度上縮短了破譯時間。
在一些領域,為了提高密碼的破譯效率而專門為其製造的Cock = 0;
while (Cock <= 19) /* 公雞最多不可能大於19 */
{
Hen = 0;
while (Hen <= 33) /* 母雞最多不可能大於33 */
{
Chick = 100 - Cock - Hen;
if (Cock * 15 + Hen * 9 + Chick == 300)/* 將數量放大三倍比較 這裡隨著倍數放大答案也會變多*/
System.out.println("\n公雞=" + Cock + "母雞=" + Hen + "雛雞=" + Chick);
Hen = Hen + 1;
}
Cock = Cock + 1;
}
執行結果:
公雞=0母雞=25雛雞=75
公雞=4母雞=18雛雞=78
公雞=8母雞=11雛雞=81
公雞=12母雞=4雛雞=84