用动态规划算法求组合数C r n 。 例如,输入:5 3 则输出:10
时间: 2024-06-17 19:07:34 浏览: 82
动态规划算法
动态规划算法可以用于求解组合数问题。组合数C r n 表示从n个元素中取出r个元素的组合数,它可以通过下面的递推公式计算:
C r n = C r − 1 n − 1 + C r n − 1 , 1 ≤ r ≤ n
其中,当r等于0或n等于r时,C r n 等于1。
因此,我们可以使用一个二维数组dp[i][j]来表示C j i。其中,i表示元素的个数,j表示取出的元素个数。具体实现时,可以按照以下步骤进行:
1. 初始化dp数组,将C j i等于1的位置都设置为1。
2. 使用递推公式计算dp数组中的其他位置,直到计算出C j i的值。
3. 返回dp[n][r]作为最终结果。
以下是Python实现的示例代码:
```
def combination(n, r):
dp = [ * (r+1) for _ in range(n+1)]
for i in range(n+1):
dp[i] = 1
for i in range(1, n+1):
for j in range(1, min(i, r)+1):
dp[i][j] = dp[i-1][j-1] + dp[i-1][j]
return dp[n][r]
n, r = map(int, input().split())
print(combination(n, r))
```
阅读全文