用C语言编写一个代码:给定一个整数n,生成n对括号的所有合法组合
时间: 2024-10-19 18:10:22 浏览: 31
清华大学C语言教学(共16个)第4个.ppt
在C语言中,你可以使用递归的方式来生成所有可能的括号组合。这里有一个简单的示例代码,它使用了栈来存储左括号,并在合适的时候添加右括号:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STACK_SIZE 50
void generateParentheses(int left, int right, char* result, int index) {
if (left == 0 && right == 0) {
printf("%s\n", result);
return;
}
if (left > 0) {
result[index] = '(';
generateParentheses(left - 1, right, result, index + 1);
result[index] = ')';
}
if (right > left) {
result[index] = ')';
generateParentheses(left, right - 1, result, index + 1);
}
}
int main() {
int n = 3; // 替换为你需要的n值
char parentheses[MAX_STACK_SIZE][MAX_STACK_SIZE];
memset(parentheses, '\0', sizeof(parentheses));
int count = 0;
if (n % 2 != 0) {
printf("Invalid input: Odd number of parentheses requested.\n");
return 1;
}
generateParentheses(n / 2, n / 2, parentheses[0], 0);
for (int i = 0; i < count; i++) {
printf("%s\n", parentheses[i]);
}
return 0;
}
```
这个程序首先检查输入的`n`是否是偶数,因为括号有成对出现的需求。然后,通过递归生成所有可能的左括号组合,并根据剩余的右括号数量选择添加哪个括号。最后,打印出所有的组合。
注意:由于生成的括号组合数量会非常多(例如n=4会有16种组合),所以在实际运行时要注意内存限制,尤其是当`n`较大时。
阅读全文