Descrição do título:
Dado que n representa o logaritmo dos parênteses gerados, escreva uma função que permita gerar todas as combinações possíveis e eficazes de parênteses.
Por exemplo, dado n = 3, o resultado é:
Minha solução:
1. Sinto que não consigo esquecer a pergunta sobre o número de telefone. Sempre quero usar a fila. Esta pergunta está escrita na fila e o tempo excede o limite. . .
2. Esta questão parece ser mais adequada para recursão
class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<string> res;
dfs(res,"",n,n);
return res;
}
void dfs(vector<string>& res,string s,int a,int b){//ab分别代表还需要的左右括号数目
if(a==0&&b==0){
res.push_back(s);
return;
}
if(a>b) return;
if(a>0) dfs(res,s+'(',a-1,b);
if(b>0) dfs(res,s+')',a,b-1);
return;
}
};