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

工具磨床东莞网站建设专业的大连网站建设

工具磨床东莞网站建设,专业的大连网站建设,公司设计网站需要包含什么资料,wordpress微信文章目录 题目 算法 完整代码 题目 参考 递归: https://blog.csdn.net/qq_45272251/article/details/103257953 利用了递归, 但思路稍复杂了 循环: https://blog.csdn.net/weixin_50340097/article/details/114579805 (看起来是递归其实是循环. 每次递归其实是循环内一次迭…

目录

题目

算法

完整代码


题目

参考

递归:

https://blog.csdn.net/qq_45272251/article/details/103257953

利用了递归, 但思路稍复杂了

循环:

https://blog.csdn.net/weixin_50340097/article/details/114579805

(看起来是递归其实是循环. 每次递归其实是循环内一次迭代, 没有使用递归的精髓)

https://blog.csdn.net/qq_38851184/article/details/104252592

循环这篇文章的收获, 额外定义状态数组记录对应位置是否匹配.

本文利用递归栈的特性, 力求简明快速地解决这个问题.

算法

首先定义全局变量

(1)待匹配的字符串str2;

(2)定义字符数组state用来记录每个位置的匹配状态. (尚未匹配上的全部标注为$或? , 待匹配上后改回来.)

递归函数输入参数

(1)查找开始位置start

(2)未匹配左括号个数(递归栈内剩余元素)leftnum

递归函数返回值

右括号位置('0'代表无可匹配的右括号)

递归算法流程:

1.如果当前下标对应字符串是'(',记录为'$'

        (1)左括号入栈: 调用递归栈从下一个位置开始寻找左括号. start=pos+1, leftnum=leftnum+1.

        (2)若左括号匹配成功. 配对的左右括号记录为' '. 从已经找到的右括号右侧继续下一次循环.

        (3)若左括号匹配失败, 出栈(返回匹配失败记号0). (所调用的递归已遍历到字符串结束.)

2.如果当前下标对应字符串是')',记录为'?'

        (1)若栈非空(leftnum!=0), 左括号出栈: 即递归函数返回(返回值右括号位置pos). 

        (2)若栈空(leftnum==0): 没有左括号时,说明在递归最外层, 不返回, 继续循环.

3、如果当前下标对应的字符既不是'('也不是')',,记录为' '.

完整代码

#include <bits/stdc++.h>
using namespace std;
#define MAXN 105char str2[MAXN];
char state[MAXN];int match(int start, int leftnum){int right=0;if(start>=strlen(str2))//匹配到最后返回return 0;for(int pos=start;pos<strlen(str2);pos++){if(str2[pos]=='('){//情况1.出现左括号state[pos]='$';//记录未匹配的左括号right=match(pos+1,leftnum+1);printf("(:%d; ):%d\n",pos,right);if(right>0){//匹配成功state[pos]=' ';state[right]=' ';pos=right;//跳过上次找过的地方}else{//如果到最后都没有找到, 说明整个字符串都被遍历过了return 0;}// match(right+1,leftnum);//没有需要匹配的左括号就不入递归栈// break;}else if(str2[pos]==')'){//情况2. 出现右括号state[pos]='?';// printf("):%d\n",pos);// match(pos+1);//永远由左括号触发下一层递归入栈, 右括号控制出栈if(leftnum>0){//栈非空return pos;}}else{//情况3. 左右括号都不是state[pos]=' ';}}return 0;
}int main()
{while(gets(str2)){memset(state,'\0',sizeof(state));match(0,0);puts(str2);puts(state);cout<<endl;}return 0;
}

运行效果:

http://www.yayakq.cn/news/288314/

相关文章:

  • 企业免费建站哪个网站可以接针织衫做单
  • 有自己网站做淘宝客赚钱莆田百度seo排名
  • wordpress如何增加page样式安徽seo网站
  • 建设网站的费用属于资产吗手机界面设计教程
  • 易企秀网站怎么做轮播图安徽网络优化公司排名
  • 做外贸都有哪些好网站网站开发 播放音频amr
  • 新服务器做网站如何配置seo网站排名优化软件是什么
  • 网站设计企wordpress价钱
  • 网站建设用户画像例子html可视化布局工具
  • 宿迁网站建设公司排名保定哪做网站好
  • 网站开发的数据库技术重庆绝美的十大冷门景点
  • 保定网站制作设计哪个公司好全国兼职网站建设
  • 原创文章网站更新wordpress 微博 同步
  • 青岛优化网站技术网站备案需要把网站做好吗
  • 网站搭建制作泰州城乡建设局网站
  • 怎么做qq刷赞网站网站建设的成本主要有哪几项
  • 电商网站开发文献汇总网站联盟三要素
  • 深圳市企业网站建设哪家好网站logo如何替换
  • html可以做网站后台吗wordpress丰富搜索页
  • 名片在哪个网站可以做word超链接网站怎么做
  • 网站制作网站设计邯郸新闻
  • 网站建设规划书万能wp企业网站模板
  • 做网站最常用的软件是什么广告创意设计竞赛
  • 深圳网站设计与制作公司医药公司网站建设方案
  • 罗田县建设局网站广西高端网站建设
  • php网站建设的基本流程图怎么用路由器做网站
  • 宜兴做宠物的网站哪里可以做营销型网站
  • 公司网站建设开发iis 无法访问此网站
  • 网站不提交表单小说网站开发实录
  • 学校网站建设代码赶集网招聘