校招编程题目(1) C++:括号匹配方案(京东)

本文探讨了如何解决长度不超过20的括号字符串的匹配问题,要求通过删除括号找到所有可能的匹配方案。对于输入如'(((())))',给出了24种方案。解决方案采用递归枚举的方法,并提到了该问题与卡特兰数的关联。
摘要由CSDN通过智能技术生成

题目描述

输入一个长度为n的字符串(0<=n<=20)只包含’(‘和’)’。对于这个字符串如”(())”,”()()”是匹配的,”)(“,”())(“都不是括号匹配的。
删除最左边的’(‘,从剩下的字符串中删除任意的’)’,使得删除后的字符串仍然是括号匹配的。
对整个字符串重复该删除操作,直到删除了整个字符串。问这样的括号匹配方案有多少个?(只要有一次删除的右括号’)’不同则认为是一个不同的方案)

样例

输入 (((())))
输出 24

输入 ()()()
输出 1

思路

由于字符串长度最大只有20,可以考虑使用暴力枚举,递归处理。

答案

#include <iostream>
#include <string>
using namespace std;

int count(string str, int len, int left) {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值