打印括号的所有组合
2013-09-13 22:02
190 查看
这是一道在线的趣味题:
打印括号实现一个算法,打印所有可能的N对尖括号组合,用a代替“<”,用b代替“>”。输入N,
输出可能的括号组合:
例如
输入:
2
输出:
aabb
abab
(最后一行行尾换行符)输入是从标准输入读取,输出打印到标准输出之中。
推荐指数:※※
来源:
这一道题,可以抽象层一个排列组合的问题,在排列过程中注意使用剩余的右括号一定要多余左括号的条件进行剪枝。
打印括号实现一个算法,打印所有可能的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; }
相关文章推荐
- 打印n对括号匹配的所有组合
- 打印出所有可能的括号组合
- 打印所有匹配括号组合
- 打印包含n个括号的所有合法的组合
- 9.9递归和动态规划(六)——打印n对括号的所有有效组合(即左右括号正确配对)
- 有趣编程 打印象棋中两个老帅不碰面的所有位置组合
- 打印所有的组合(组合问题C++实现)
- 每日一道算法题:打印一维数组的所有组合
- 实现一种算法,打印n对括号的全部有效组合(即左右括号正确配对)
- 打印n对括号的全部有效组合
- 打印n对括号的全部有效组合(即左右括号正确配对)
- 打印给定数目括号的组合
- 将一个整数拆分成不相同的正整数之和,打印出所有的组合
- 打印括号的合法组合
- 从1-100中挑选出10个不同的数字,把可能的所有组合都打印出来
- 打印出指定数目的{}的所有组合
- 打印出一个字符串的所有组合的递归方式
- n个布尔变量,打印所有可能的真值组合
- 一个集合所有子集和为sum的组合打印
- 打印n对括号的全部有效组合(即左右括号正确配对)