列舉法應用例項

2021-08-30 04:42:48 字數 1402 閱讀 5016

/*

題目:三色球問題

內容:乙個口袋裡放有12個球,已知其中3個是紅的,3個是白的,6個是黑的,現在從中任取8個,問共有

多少種可能的顏色搭配?

作答者:小白楊

收穫: 設8個球中紅球為x1個,白球為x2個,則黑球為8-x1-x2。又已知12個球中有3個紅球,3個白球,6

個黑球,因此x1的取值範圍[0,3],x2的取值範圍為[0,3],黑球的個數小於等於6,即8-x1-x2<=6.

*/#include int main()

} printf("%d\n",flag);

return 0;}/*

題目:**金魚(列舉法)

內容: 小明將養的一缸金魚分5次**:第一次賣出全部的一半加1/2條;第二次賣出餘下的三分之一加

1/3條;第3次賣出餘下的四分之一加1/4條;第4次賣出餘下的五分之一加1/5條;最後賣出餘下的11條。

試程式設計求出原來魚缸中共有多少條魚。

作答者:小白楊

收穫:依題意可知,金魚是分5次**的,每次賣出的方式都相同,因此可以用表示式將每次賣魚後剩下的

條數計算出來。

由:第1次賣出全部的一半加1/2條;

第2次賣出餘下的三分之一加1/3條;

第3次賣出餘下的四分之一加1/4條;

第4次賣出餘下的五分之一加1/5條;

可推出:第j次賣出餘下的(j+1)分之一加1/(j+1)條。

假設第j次賣魚前金魚總數為x,則第j次賣魚後魚缸中還剩下金魚的條數為:x-(x+1)/(j+1).

又由於「最後賣出餘下的11條」,因此第4次賣魚後魚缸中剩下的金魚條數為11條。因為金魚只能整條進行

**,因此x+1必然能夠整除j+1.可以從23開始試探x的取值,由於x值必為奇數,因此步長取2.

*/#include int main()

if(j==5&&x==11)

} return 0;

} /*題目:求車速

內容:作答者:

收穫: 優化:將一位5位數存入乙個陣列

*/#include int main();

while(x<100000)

if(a[0]==a[4]&&a[1]==a[3])

break;

x++;

} v = (double)(x-95859)/2;

printf("車速:%f\t,新的對稱數:%d\n",v,x);

return 0; }/*

題目:愛因斯坦的數學問題

內容:作答者:小白楊

內容:

*/#include int main()

}printf("\n在1~%d中有%d個數滿足條件\n",n,flag);

} return 0;

}

列舉法的簡單應用

箱子裡有紅,黃,藍,白,黑五種顏色玻璃球若干,每次任意拿出三個球,問拿出三種不同顏色玻璃球的可能取法,請輸出每種排列的情況。註解 利用列舉法定義五種情況,enum color 定義四個整形變數 int i,j,k,m 0 依次從i到k分別進行從紅到黑的情況迴圈,利用if來決斷i,j,k互不相等的情況...

演算法 列舉法

列舉 enumuerate 是蠻力策略的一種表現,最普遍的思維方式。它根據問題中的條件將可能的情況一一枚舉出來,逐一嘗試從中找到滿足問題條件的解。優點 演算法簡單,在區域性地方使用列舉法,效果十分的好 缺點 運算量過大,當問題的規模變大的時候,迴圈的階數越大,執行速度越慢 示例 百錢百雞問題 我國古...

暴力列舉法

思路及演算法 最容易想到的方法是列舉陣列中的每乙個數 x,尋找陣列中是否存在 target x。當我們使用遍歷整個陣列的方式尋找 target x 時,需要注意到每乙個位於 x 之前的元素都已經和 x 匹配過,因此不需要再進行匹配。而每乙個元素不能被使用兩次,所以我們只需要在 x 後面的元素中尋找 ...