当前位置: 首页 > news >正文

常用网站建设技术四川省建设厅招标网站

常用网站建设技术,四川省建设厅招标网站,旅游订房网站开发需求文档,wordpress查版本号题目描述 括号。设计一种算法#xff0c;打印n对括号的所有合法的#xff08;例如#xff0c;开闭一一对应#xff09;组合。 说明#xff1a;解集不能包含重复的子集。 例如#xff0c;给出 n 3#xff0c;生成结果为#xff1a; [((())),(()())…题目描述 括号。设计一种算法打印n对括号的所有合法的例如开闭一一对应组合。 说明解集不能包含重复的子集。 例如给出 n 3生成结果为 [((())),(()()),(())(),()(()),()()() ]解题思路与代码 这道题抽象总结出来就只有两条规则分别是 左括号的数量不能多于n右括号的数量不能多于左括号 方法一 回溯法 这道题我看了一下比较适合用回溯法去解决。 我们需要一个辅助函数backtracking它一共需要设置这么几个参数分别是左括号的数量left右括号的时候rightn的大小n存储结果集的向量result一个string用来放括号字符str共5个参数。 写一道回溯算法的题的时候一般是先去想这算法该如何返回。那么当str的长度等于2倍的n时就该返回了把str存入result后返回 之后我们就要去做判断了。这道题和一般的回溯算法不一样我们这里不需要去使用for循环直接进行条件判断就好了 如果左括号的数量小于n我们就往str中加上一个左括号然后进行回溯回溯结束后不要忘记删除加入str的括号。 如果右括号的数量小于左括号的数量我们就往str中加入一个右括号然后进行回溯回溯结束后别忘记加入str中的括号 整个回溯的逻辑就是这样下面请看具体代码 class Solution { public:// 左括号的数量不能大于 n 。// 右括号的数量不能大于当前已经添加的左括号的数量。vectorstring generateParenthesis(int n) {vectorstring result;string str;backtracking(0,0,str,result,n);return result;}void backtracking(int left,int right,string str,vectorstring result,int n){if(str.size() 2*n){result.push_back(str);return ;}if(left n){str (;backtracking(left1,right,str,result,n);str.pop_back();}if(left right ){ str );backtracking(left,right1,str,result,n);str.pop_back();}} };复杂度分析 时间复杂度 在这个问题中我们需要生成所有可能的合法括号组合。对于每个位置我们可以选择添加左括号或右括号当然要满足条件。因此在最坏的情况下时间复杂度可以看作是 O(2^(2n)/√n)。这个估计来自于卡特兰数Catalan number它是解决这类问题括号生成的通常方法。对于 n 对括号卡特兰数 C(n) (1/(n1))(2n)!/((n!)(n1)!))。卡特兰数增长的速度相当于 O(4^n/(n*√n))。 空间复杂度 空间复杂度主要取决于两个方面递归深度和结果列表。递归深度最多为 2n因为每个递归调用都会消耗 O(1) 的栈空间所以递归调用栈的空间复杂度为 O(2n)。结果列表中包含 C(n) 个元素每个元素是一个长度为 2n 的字符串。因此结果列表的空间复杂度为 O(C(n) * 2n) O(4^n/√n * 2n)。 总结 这道题可以归类为回溯算法可以解决一类问题中的排列问题。但这和普通的排列问题还不一样这是一种特殊的排列问题。因为左括号的数量要始终要大于右括号有了限制条件后就和一般的排列问题不一样了。 还是很有意思的这一道题。这道题用回溯算法已经算是最优解了 这道题的解决方案与卡特兰数相关它的时间复杂度和空间复杂度都与卡特兰数有关。 在这种情况下尝试寻找一种更好的方法并不容易。因为我们需要生成所有可能的合法括号组合所以无论如何我们都需要遍历这个解空间。回溯算法在这里表现得非常好因为它能够在满足约束条件的情况下生成所有可能的解。而且它在遍历解空间时非常高效因为它可以在不满足条件的情况下立即剪枝。 当然这并不意味着没有其他方法可以解决这个问题。例如你可以尝试动态规划但这种方法的实现会更加复杂而且在这种情况下它的性能可能不如回溯算法。所以对于这道题回溯方法已经是很好的解决方案了。
http://www.hkea.cn/news/14551963/

相关文章:

  • 网站架构演变过程北京免费分类信息发布网
  • 广州网站建设专家做美容美发的网站有哪些
  • 帝国建站软件网络营销成功的案例分析
  • 网站怎么做搜狗排名天猫建设网站的目的
  • 医药网站怎么做军事最新消息中国
  • 网站开发用php还是.net好wordpress php要求
  • 网站验证码 出不来企业网站建设 网络服务
  • devexpress网站开发做足球推荐网站能赚钱吗
  • 设计经典网站网站建设中服务器的搭建方式
  • 做网站推销的如何谈客户有什么字体设计网站好
  • 烟台城乡建设学校官方网站苏州公司变更
  • 化妆品网站建设经济可行性分析美食网站功能建设
  • 企业网站开发 外文文献wordpress使用
  • wordpress的安装方法网站优化要做哪些
  • 海南省建设网站asp.net网站项目建设
  • 企业网站的推广方式有哪些平面设计大师
  • 农业基本建设项目信息网站wordpress搜索结果不存在页面
  • 网站备案 每年平面设计在哪里学
  • 什么是工具型网站南昌网站设计系统
  • 沧浪企业建设网站公司wordpress分页模板
  • 最火的网站开发语言从化网站开发
  • 毕设做网站有什么题目网页设计心得体会5000字
  • 沈阳快速建站公司有哪些超好看的排版素材网站
  • 怎么制作网站二维码水利局网站建设整改报告
  • 家乡网站怎么做wordpress企业免费主题下载
  • 一个专门做ppt的网站建云购网站吗
  • 合作网站制作设计网站价格表
  • 现在允许做网站吗网络营销策划名词解释
  • 深圳福田建网站开发公司网签的流程
  • 做网站的背景像素哪些网站会盗取