用C语言及递归分治法写一个程序:n对括号有多少种匹配方式
时间: 2024-05-03 08:16:52 浏览: 138
以下是用C语言及递归分治法实现n对括号匹配的程序:
```c
#include <stdio.h>
// 递归函数,求解n对括号的匹配方式
int count(int n) {
// 如果n为0,则括号已经匹配完毕,返回1
if (n == 0) {
return 1;
}
int i, j, res = 0;
// 枚举左右括号的数量
for (i = 0, j = n - 1; i < n; i++, j--) {
res += count(i) * count(j);
}
return res;
}
int main() {
int n;
printf("请输入括号对数:");
scanf("%d", &n);
printf("%d对括号有%d种匹配方式。\n", n, count(n));
return 0;
}
```
程序中的count函数采用递归分治法,枚举左右括号的数量,然后计算左右括号的匹配方式数相乘,最终返回所有情况的总和。程序运行时,先输入括号对数,然后输出匹配方式数。
阅读全文