C++ 生成括号

生成2n个单括号(不要求合理)

#include<vector>
#include<string>
void generate(std::string item, int n, std::vector<std::string>& result)
{
 if (item.size()==2*n)
 {
  result.push_back(item);
  return;
 }
 generate(item + '(', n, result);
 generate(item + ')', n, result);
}
int main()
{
 std::vector<std::string> result;
 generate("", 2, result);
 for (unsigned int i = 0; i < result.size(); i++)
 {
  printf("%s\n",result[i].c_str());
 }
 return 0;
}

运行结果为:

((((
((()
(()(
(())
()((
()()
())(
()))
)(((
)(()
)()(
)())
))((
))()
)))(
))))

生成n组合理的括号。

#include<string>
#include<vector>
class Solution
{
public:
 Solution() {};
 ~Solution() {};
 std::vector<std::string> generateParenthesis(int n)
 {
  std::vector<std::string> result;
  generate("",n,n,result);
  return result;
 }
 void generate(std::string item, int left, int right, std::vector<std::string>& result)
 {
  if (left==0 && right==0)
  {
   result.push_back(item);
   return;
  }
  if (left>0)
  {
   generate(item + '(', left - 1, right, result);
  }
  if (left<right)
  {
   generate(item + ')', left, right - 1, result);
  }
 }
};
int main()
{
 Solution solve;
 std::vector<std::string> result = solve.generateParenthesis(3);
 for (unsigned int i = 0; i < result.size(); i++)
 {
  printf("%s\n",result[i].c_str());
 }
 return 0;
}

运行结果为

((()))
(()())
(())()
()(())
()()()
发布了61 篇原创文章 · 获赞 46 · 访问量 1587

猜你喜欢

转载自blog.csdn.net/weixin_44208324/article/details/104856061
今日推荐