c语言用动态规划求组合数(C nm)的程序代码
时间: 2024-12-14 17:21:30 浏览: 2
在C语言中,我们可以使用动态规划来计算组合数(即从n个不同元素中选取m个元素的不同组合数目),这通常涉及到阶乘函数的应用。下面是一个简单的C程序示例:
```c
#include <stdio.h>
// 动态规划计算阶乘
long long factorial(int n) {
if (n == 0 || n == 1) return 1;
else return n * factorial(n - 1);
}
// 动态规划计算组合数 C(n, m)
long long combination(int n, int m) {
if (m > n || m < 0 || n < 0) return 0; // 防止越界
return factorial(n) / (factorial(m) * factorial(n - m));
}
int main() {
int n, m;
printf("请输入两个整数 n 和 m:");
scanf("%d %d", &n, &m);
// 计算并打印组合数
long long result = combination(n, m);
printf("C(%d, %d) = %lld\n", n, m, result);
return 0;
}
```
在这个程序中,我们首先定义了一个递归函数`factorial`来计算阶乘,然后利用这个函数实现了`combination`函数来计算组合数。注意,当m大于n或m、n小于0时,组合数为0。
阅读全文