首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >括号可能的组合模式

括号可能的组合模式
EN

Stack Overflow用户
提问于 2020-01-17 14:20:08
回答 1查看 71关注 0票数 0

我遇到了括号组合编码问题,以及可能的解决方案搜索,如下所示,

代码语言:javascript
复制
void Ans(int open,int close,string output)
{
    if(open == 0 && close == 0)
    {
        cout<<output<<"\n";
        return;
    }

    if(open)
    Ans(open-1,close,output+"(");

    if(open<close)
    Ans(open,close-1,output+")");
}

int main()
{
    int n=2;

    Ans(n,n,"");
    return 0;
}

问题:上面的代码如何调用第二个括号模式。我可以打开第一行,如果是n=2或更多,那么它是如何触发第二行模式的。

--编辑,n=2,输出是,

(()) ()()

现在,第一行(())具有调用堆栈的意义,但是,如何启动第二行模式组合,它在打印第一行(()) cout<<output<<"\n"; return;时已经是return了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-17 14:31:54

您有递归调用。

  • Ans(2, 2, "");调用只有Ans(1, 2, "(");
  • Ans(1, 2, "(");调用Ans(0, 2, "(("); (第一个模式)和Ans(1, 1, "()"); (第二个pattern).
  • Ans(0, 2, "((");调用Ans(0, 1, "(()");,然后递归调用Ans(0, 0, "(())"); ),(displayed)
  • Ans(1, 1, "()");调用Ans(0, 1, "()(");,递归调用Ans(0, 0, "()()"); (显示)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59789210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档