zoukankan      html  css  js  c++  java
  • 面试金典--9.6

    题目描述:实现一种算法,打印n对括号的全部有效组合

    思路:递归,不合法状态就是right<left;其他情况加入左右括号分别递归

     1 #include <iostream>
     2 #include <queue>
     3 #include <climits>
     4 #include <algorithm>
     5 #include <memory.h>
     6 #include <stdio.h>
     7 using namespace std;
     8 
     9 vector<string> res;
    10 void addParen(int left,int right,string ans)
    11 {
    12     if(left <0 || right < left)
    13     {
    14         return;
    15     }
    16     if(left ==0 && right == 0)
    17     {
    18         res.push_back(ans);
    19         //return;
    20     }
    21     else
    22     {
    23         if(left > 0)
    24         {
    25             string ans1 = ans+'(';
    26             addParen(left-1,right,ans1);
    27         }
    28         if(right > left)
    29         {
    30             string ans1 = ans+')';
    31             addParen(left,right-1,ans1);
    32         }
    33     }
    34 }
    35 
    36 int main()
    37 {
    38     string s;
    39     addParen(3,3,s);
    40     vector<string>::iterator it = res.begin();
    41     while(it != res.end())
    42     {
    43         cout<<*it<<endl;
    44         it++;
    45     }
    46     return 0;
    47 }
  • 相关阅读:
    codeforce1028A Find Square
    2018ccpc网络赛 Buy and Resell
    差分约束
    Lost Cows
    动态查询区间第k大
    疫情控制
    天天爱跑步
    次小生成树
    树上差分闇の連锁
    Stars in Your Window
  • 原文地址:https://www.cnblogs.com/cane/p/3798720.html
Copyright © 2011-2022 走看看