CI8.5--有效括号组合问题

来源:互联网 发布:淘宝双十一红包攻略 编辑:程序博客网 时间:2024/06/06 02:45

输出n对括号的所有有效组合。

思路:

运用递归的思想。只要左括号没有用完,总可以插入左括号;当已插入的左括号数目大于右括号,那么就可以插入右括号。我们只要记录左右括号剩余的数目,然后递归即可。递归终止条件有两个:当左括号剩余数小于0或者左括号剩余数大于右括号剩余数,此时为无效状态;当左右括号剩余数都为0,此时输出结果。

#include <iostream>#include <vector>using namespace std;void Pare(vector<char>& s, int l, int r, int c){if (l < 0 || r < l)return;if (l == 0 && r == 0){for (int i = 0; i < s.size(); ++i)cout << s[i];cout << endl;}else{if (l > 0){s[c] = '(';Pare(s, l - 1, r, c + 1);}if (r > l){s[c] = ')';Pare(s, l, r - 1, c + 1);}}}void main(){int c = 4;vector<char> vec(2*c);Pare(vec, c, c, 0);}


原创粉丝点击