您的位置:首页 > 其它

打印括号的所有组合

2013-09-13 22:02 190 查看
这是一道在线的趣味题:

打印括号实现一个算法,打印所有可能的N对尖括号组合,用a代替“<”,用b代替“>”。输入N,

输出可能的括号组合:

例如

输入:

2

输出:

aabb

abab
(最后一行行尾换行符)输入是从标准输入读取,输出打印到标准输出之中。

推荐指数:※※

来源:

这一道题,可以抽象层一个排列组合的问题,在排列过程中注意使用剩余的右括号一定要多余左括号的条件进行剪枝。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
using namespace std;
void print_bracket(int left,int right,int index,char *str,int len){
if(left==0&&right==0){
str[len]='\0';
printf("%s\n",str);
}
else{
if(left>=1){
str[index]='a';
print_bracket(left-1,right,index+1,str,len);
}
if(right>left){
str[index]='b';
print_bracket(left,right-1,index+1,str,len);
}
}
}
int main()
{
int n;
scanf("%d",&n);
char *str=new char[n*2+1];
str[0]='a';
print_bracket(n-1,n,1,str,n+n);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: