C語言實現撈魚問題

2021-06-28 12:53:27 字數 602 閱讀 1829

撈魚問題:20個桶,每個桶中有10條魚,用網從每個桶中抓魚,每次可以抓住的條數隨機,每個桶只能抓一次,問一共抓到180條的排列有多少種。

分析:看看這個問題的對偶問題,抓取了180條魚之後,20個桶中剩下了20條魚,不同的抓取的方法就對應著這些魚在20個桶中不同的分布,於是問題轉化為將20條魚分到20個桶中有多少中不同的分類方法(這個問題當然也等價於180條魚分到20個桶中有多少種不同的方法)。

dp[i][j]:前i個桶放j條魚的方法為前i-1個桶放j-k(0<=k<=10)(因為第i桶只能放0到10條魚)條魚的方法總和。我們可以得到狀態方程:f(i,j) = sum

/*

撈魚:將20條魚放在20個桶中,每個桶最多可以放10條,求得所有的排列方法

/*自底向上dp f(i,j) = sum

/*該方法中測試 20個桶 180條魚,與遞迴速度做對比

*/void

catchfish()

for(int i = 2; i <= bucketn; ++i) //

從第二個桶開始}}

printf(

"%d\n

",dp[bucketn][fishn]);

}

約瑟夫問題 C語言實現

約瑟夫環 約瑟夫問題 是乙個數學的應用問題 已知n個人 以編號1,2,3 n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列。通常解決這類問題時我們把編號從0 n 1,最後 1 結果...

編輯距離問題c語言實現

所謂編輯距離是指乙個字串轉化成另外乙個字串所需要的最少編輯次數。1 增加乙個字元 2 刪除乙個字元 3 用乙個字元替換原來的字元 解決的方法當然是動歸了。首先研究子問題,假設兩字串a,b。1 當兩個字串長度為1時,若字元相同則編輯距離為0 若不同則為1 2 當乙個a的長度為1,b的長度為n時,先利用...

荷蘭旗問題(C語言實現)

三色旗問題,也叫荷蘭旗問題 一根繩子上有一些藍色 白色 紅色的旗子,它們的排列順序是隨意的 現要求把旗子分類並按照藍色的旗子都在前,紅色的旗子都在後,白色的旗子在中間的順序排列 你只能在一根繩子上操縱這一切,並且一次只能調換兩個旗子 include define max flag 30 define...