c++括号匹配和网页跳转

 1 #include <iostream>
 2 #include <vector>
 3 #include <algorithm>
 4 #include <stdlib.h>
 5 #include <bits/stdc++.h>
 6 using namespace std;
 7
 8 int main()
 9 {
10     string str;
11
12     stack<int> s;
13     vector<vector<int> > vec;
14     int flag=1;
15
16     cin>>str;
17     for(int i=0;i<str.length();i++)
18     {
19         if(str[i]==‘(‘)
20         {
21             //下标入栈
22             s.push(i+1);
23         }
24         else if(str[i]==‘)‘)
25         {
26             if(s.empty())
27             {
28                 flag=0;
29                 break;
30             }
31             else
32             {
33                 int left=s.top();
34                 int right=i+1;
35                 s.pop();
36                 vector<int> v;
37                 v.push_back(left);
38                 v.push_back(right);
39                 vec.push_back(v);
40             }
41         }
42     }
43     if(flag&&s.empty())
44     {
45         cout<<"Yes"<<endl;
46         for(int i=0;i<vec.size();i++)
47         {
48             cout<<vec[i][0]<<" "<<vec[i][1]<<endl;
49         }
50     }
51     else
52     {
53         cout<<"No"<<endl;
54     }
55     return 0;
56 }

 1 #include <iostream>
 2 #include <vector>
 3 #include <algorithm>
 4 #include <stdlib.h>
 5 #include <bits/stdc++.h>
 6 using namespace std;
 7
 8 int main()
 9 {
10     //提高输入输出的速度
11     ios::sync_with_stdio(false);
12
13     vector<string> vec;
14     int n;
15     cin>>n;
16
17     string do_what;
18     string url;
19     int cursor=0;
20     for(int i=0;i<n;i++)
21     {
22         cin>>do_what;
23         if(do_what=="VISIT")
24         {
25             while(!vec.empty()&&cursor<vec.size()-1)
26             {
27                 vec.pop_back();
28             }
29             cin>>url;
30             vec.push_back(url);
31             cout<<url<<endl;
32             cursor=vec.size()-1;
33             continue;
34         }
35         else if(do_what=="BACK")
36         {
37             cursor--;
38             if(!vec.empty()&&0<=cursor&&cursor<vec.size())
39             {
40                 cout<<vec[cursor]<<endl;
41             }
42             else
43             {
44                 cout<<"Ignore"<<endl;
45                 if(cursor<0)
46                 {
47                     cursor=0;
48                 }
49             }
50         }
51         else if(do_what=="FORWARD")
52         {
53             cursor++;
54             if(!vec.empty()&&0<=cursor&&cursor<vec.size())
55             {
56                 cout<<vec[cursor]<<endl;
57             }
58             else
59             {
60                 cout<<"Ignore"<<endl;
61                 if(cursor==vec.size())
62                 {
63                     cursor=vec.size()-1;
64                 }
65             }
66         }
67     }
68     return 0;
69 }

也可以采用设置一个前进栈,一个后退栈的做法。

时间: 2024-10-19 13:41:52

c++括号匹配和网页跳转的相关文章

栈应用之 括号匹配问题(Python 版)

栈应用之 括号匹配问题(Python 版) 检查括号是否闭合 循序扫描被检查正文(一个字符)里的一个个字符 检查中跳过无关字符(所有非括号字符都与当前处理无关) 遇到开括号将其压入栈 遇到闭括号时弹出当时的栈顶元素与之匹配 如果匹配成功则继续,发现匹配失败时则以检查失败结束 1 def check_parens(text) : 2 # 括号匹配检查函数,text 是被检查的正文串 3 parens = "(){}[]" 4 open_parens = "({[" 5

括号匹配_进阶篇 ( 7-2 符号配对 )

括号匹配_进阶篇(/.../) 之前有个简单的括号匹配,令这三对括号进行匹配:( ),[ ],{ } 点击跳转:简单的括号匹配问题 之所以说他们简单,是因为每个括号都只占一个字符. 而进阶篇,虽然说起来很酷,其实就是再多一个对/* */的判断 先上原题 7-2 符号配对 (20 分) 请编写程序检查C语言源程序中下列符号是否配对:/*与*/.(与).[与].{与}. 输入格式: 输入为一个C语言源程序.当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束.程序中需要检查配对的符号不超过1

nyoj 括号匹配

这个方程有两种形式,本文采用 if(s[i]=s[j]) dp[i][j]=d[i-1][j-1] dp[i][j]=min(dp[i][k]+dp[k+1][j],dp[i][j]) (i=<k<j) 其实与另一种方法比较:根据j的所有匹配情况取最小值 1.i到j无匹配,取为dp[i][j-1]+1 2.列举所有匹配情况 dp[i][k-1]+dp[k+1][j] 取上述所有情况最小值 两者都能获得正确的结果. 同时两者的初始化为 dp[i][j]==1 if(i==j) 规划方向为:  

括号匹配问题(顺序栈实现)

本周老师作业留了两个.先上传一个吧.那个有时间我再传上来~ 本周的要求: 1.给出顺序栈的存储结构定义. 2.完成顺序栈的基本操作函数. 1)      初始化顺序栈 2)      实现入栈和出栈操作 3)      实现取栈顶元素和判空操作 括号匹配问题 3.编写主函数实现基本操作函数功能,并设置测试数据,测试合法和非法数据的输出结果. 4.程序调试运行并保存输出结果. 5.整理并提交实验作业. 1 #include <cstdio> 2 #include <cstring>

堆栈_括号匹配

class Solution { public: bool isValid(string s) { if(s.empty()) return false; stack<int> s1; int n=s.size(); for(int i=0;i<n;i++) { if(s[i]=='('||s[i]=='['||s[i]=='{') s1.push(s[i]); else if(s1.empty()) return false; else if((s[i]==')'&&s

括号匹配(二)

括号匹配(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:6 描述 给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来.如:[]是匹配的([])[]是匹配的((]是不匹配的([)]是不匹配的 输入 第一行输入一个正整数N,表示测试数据组数(N<=10)每组测试数据都只有一行,是一个字符串S,S中只包含以上所说的四种字符,S的长度不

动态规划(2)--括号匹配(二)

括号匹配(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:6 描述给你一个字符串,里面只包含"(",")","[","]"四种符号,请问你需要至少添加多少个括号才能使这些括号匹配起来.如:[]是匹配的([])[]是匹配的((]是不匹配的([)]是不匹配的 输入 第一行输入一个正整数N,表示测试数据组数(N<=10)每组测试数据都只有一行,是一个字符串S,S中只包含以上所说的四种字符,S的长度不超

行编辑程序、括号匹配检验

行编辑程序.括号匹配检验程序都是利用的栈的数据结构.而这两个 小程序也非常好的显示了栈先进后出的思想.由于程序本身很简短.清晰,所 以也就不做多的解释了,直接上代码了. 行编辑程序: #include<iostream> #include<stack> using namespace std; int main() { stack<char> sta; char ch = getchar(); while(ch!=EOF) { while(ch!=EOF&&am

网页跳转,可以任意规定延迟显示的时间

<html> <head> <title>页面跳转</title> <meta http-equiv="refresh" content="3;url=http://hi.baidu.com/xiangso"> </head> <body> 此页面三秒后跳转到http://hi.baidu.com/xiangso</body> </html> 数字 3 代表延