n个括号对的所有可能情况
Posted March On
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了n个括号对的所有可能情况相关的知识,希望对你有一定的参考价值。
所有可能情况的数量为卡特兰数。故求所有可能的出栈情况与此类似。
思路:
若左括号没全插入,则插入左括号;
若已插入左括号数比已插入右括号数多,则插入右括号;
1 #include<stdio.h> 2 void printParen(int l,int r,int n,char str[],int index) 3 { 4 if(l>n || r<0 || l<r)return;//已插入的右括号比左括号多,不合法括号对 5 6 if(l==n && r==n) printf("%s\n",str); 7 else 8 {//已插入的左括号不比已插入的右括号少 9 if(l<n) 10 {//若左括号没插入完,继续插入左括号 11 str[index]=‘(‘; 12 printParen(l+1,r,n,str,index+1); 13 } 14 if(l>r) 15 {//若已插入的左括号比右括号多,插入右括号 16 str[index]=‘)‘; 17 printParen(l,r+1,n,str,index+1); 18 } 19 } 20 } 21 int main() 22 { 23 static int count=3; 24 char str[2*count+1]; 25 str[2*count]=‘\0‘; 26 printParen(0,0,count,str,0); 27 return 0; 28 }
以上是关于n个括号对的所有可能情况的主要内容,如果未能解决你的问题,请参考以下文章
swift算法:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
2021-09-19:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且有效的括号组合。
2021-06-01:K个逆序对数组。给出两个整数 n 和 k,找出所有包含从 1 到 n 的数字,且恰好拥有 k 个逆序对的不同的数组的个数。逆序对的定义如下:对于数组的第i个和第 j个元素,如果满