c语言代码完成:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。 示例 : 输入:n = 3 输出:["((()))","(()())","(())()","()(())","()()()"]
时间: 2024-11-27 22:12:54 浏览: 6
设计一个算法判别一个算术表达式的圆括号是否正确配对
在 C 语言中,可以使用递归算法来生成所有有效的括号组合。这里提供一个简单的函数实现思路:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 函数声明
void generateParenthesis(char parentheses[], int left, int right, int n);
// 主函数
int main() {
int n = 3;
char result[100][50]; // 存储结果数组
int index = 0;
if (n >= 0) {
generateParenthesis(result, 0, 0, n);
}
printf("所有可能的括号组合:\n");
for (int i = 0; i < index; i++) {
printf("%s\n", result[i]);
}
return 0;
}
// 生成括号的辅助函数
void generateParenthesis(char parentheses[], int left, int right, int n) {
if (left == n && right == n) { // 括号配对完毕,添加到结果
strcpy(parentheses + strlen(parentheses), "()");
printf("%s ", parentheses); // 打印结果
return;
}
if (left < n) { // 还有左括号未使用
parentheses[strlen(parentheses)] = '(';
generateParenthesis(parentheses, left + 1, right, n);
parentheses[strlen(parentheses) - 1] = '\0'; // 清除最后一个字符
}
if (right < left) { // 已使用完左括号但仍需右括号
parentheses[strlen(parentheses)] = ')';
generateParenthesis(parentheses, left, right + 1, n);
parentheses[strlen(parentheses) - 1] = '\0'; // 清除最后一个字符
}
}
```
阅读全文