打印出所有可能的括号组合
2012-09-10 13:30
309 查看
以下为递归方法实现
#include <vector>
#include <iostream>
#define N 3
void print(int left, int right, std::vector<char> v)
{
if (left == right && left == N)
{
for (size_t i = 0; i < v.size(); i++)
{
std::cout << v[i];
}
std::cout << std::endl;
return;
}
if (left > right)
{
v.push_back(')');
print(left, right + 1, v);
if (left < N)
{
v.pop_back();
v.push_back('(');
print(left + 1, right, v);
}
}
else
{
v.push_back('(');
print(left + 1, right, v);
}
};
int main()
{
std::vector<char> v;
print(0, 0, v);
return 0;
};
#include <vector>
#include <iostream>
#define N 3
void print(int left, int right, std::vector<char> v)
{
if (left == right && left == N)
{
for (size_t i = 0; i < v.size(); i++)
{
std::cout << v[i];
}
std::cout << std::endl;
return;
}
if (left > right)
{
v.push_back(')');
print(left, right + 1, v);
if (left < N)
{
v.pop_back();
v.push_back('(');
print(left + 1, right, v);
}
}
else
{
v.push_back('(');
print(left + 1, right, v);
}
};
int main()
{
std::vector<char> v;
print(0, 0, v);
return 0;
};
相关文章推荐
- 打印所有小写字母所有可能的组合
- 按要求打印字符数组中所有可能的字符组合
- 给一个字符串(包含重复字符),打印它的所有可能的组合。
- 打印所有匹配括号组合
- 打印n对括号匹配的所有组合
- 给定一个数组,n个数,打印所有可能的r位数的组合。例如{1,2,3,4}n=4,r=2.输出{1,2}{1,3}{1,4}{2,3}{2,4}{3,4}
- 由a-z、0-9组成的3位密码,列出并打印所有可能的密码组合
- 从1-100中挑选出10个不同的数字,把可能的所有组合都打印出来
- 请用Java实现一个算法:由a-z、0-9组成3位的字符密码,并打印所有可能的密码组合。
- 9.9递归和动态规划(六)——打印n对括号的所有有效组合(即左右括号正确配对)
- 打印出大小为n的数组(可能有重复元素)里所有可能的组合
- n个布尔变量,打印所有可能的真值组合
- 输出指定括号对数的所有可能组合
- 打印括号的所有组合
- 用java语言实现,一个组数:122345这6个数,打印出它所有可能的组合;要求4不能在第3位,3和5不能相连
- 打印包含n个括号的所有合法的组合
- 【每天算法2】:用java语言实现,一个组数:122345这6个数,打印出它所有可能的组合;要求4不能在第3位,3和5不能相连。
- 网新国际2008春季招聘笔试题 打印电话号码所对应的字符的所有可能组合
- 公式加括号的所有可能
- 如果一个正整数可以由连续正整数求和而来,输出所有可能的组合