day5

五道栈的题加上字符串。

单调队列、

T1

表达式括号匹配   洛谷P1739

题目描述

假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成,以“@”作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回“YES”;否则返回“NO”。表达式长度小于255,左圆括号少于20个。

输入格式

一行:表达式

输出格式

一行:“YES” 或“NO”

#include<bits/stdc++.h>
int a,sum=0;
char s[10005];
using namespace std;
int main(){
cin>>s;
for(int i=0;i<strlen(s);i++){
if(s[i]==')') sum++;
if(sum>a){
cout<<"NO";
return 0;
}
if(s[i]=='(') a++;
}
if(a!=sum)
cout<<"NO";
else
cout<<"YES";
return 0;
}

这题一开始写了八十分,第一个样例过了,就直接提交,80······

原来我的样例二没对。

最简单的题,刚开始就这样。

————————————————————————————————————————

T2

括弧匹配检验

括弧匹配检验
描述
假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如 () 或 [([][])] 等为正确的匹配,[(]) 或( 或 (([)]) 均为错误的匹配。
现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配?
输入一个只包含圆括号和方括号的字符串,判断字符串中的括号是否匹配,匹配就输出 “OK” ,不匹配就输出“Wrong”。输入一个字符串:[([][])],输出:OK。

格式
输入格式
输入仅一行字符(字符个数小于255)。

输出格式
匹配就输出 “OK” ,不匹配就输出“Wrong”。

#include <bits/stdc++.h>
using namespace std;
char pipei(char ch)
{
if(ch == ']')
return '['; if(ch == ')')
return '(';
return 0;
} void search(char *s)
{
int i, top = 0;
char ch;
int n = strlen(s);
int stk[n + 1];
if(n%2==1)
{
cout<<"Wrong";
return;
}
for(i=0;i<n;i++)
{
ch = pipei(s[i]);
if(ch)
{
if(top==0||stk[top-1]!=ch)
{
cout<<"Wrong";
return;
}
top--;
}
else
stk[top++] = s[i]; }
if(top == 0)
cout<<"OK";
else
cout<<"Wrong"; } int main()
{
int i;
char s[256];
cin>>s;;
search(s);
}

题二首先搜索输入的括弧,并两两匹配

这块就取巧了:如果输入本来就是奇数,那么肯定不能匹配

if(n%2==1)
{
cout<<"Wrong";
return;
}

————————————————————————————————————————

T3

字符串匹配问题

【题目描述】
字符串中只含有括号 (),[],<>,{},判断输入的字符串中括号是否匹配。如果括号有互相包含的形式,从内到外必须是<>,(),[],{},例如。输入: [()] 输出:YES,而输入([]),([)]都应该输出NO。

【输入】
第一行为一个整数n,表示以下有多少个由括好组成的字符串。接下来的n行,每行都是一个由括号组成的长度不超过255的字符串。

【输出】
在输出文件中有n行,每行都是YES或NO。

#include <bits/stdc++.h>
using namespace std;
char a[]={'{','[','(','<','}',']',')','>'},s[300];
int b[300],p[300];
int top;
int main(){
int t,len,i,j,k,flag;
cin>>t;
while(t--){
flag=1,top=0;
cin>>s;
len=strlen(s);
for(i=0;i<len;i++)
for(j=0;j<8;j++)
if(s[i]==a[j]){
b[i]=j;
break;
}
i=0;//重复
while(i<len){ if(b[i]<=3)
if(top==0||b[i]>=p[top]){
top++,p[top]=b[i];
}else{
flag=0;
break;
}
else if(b[i]>=4){
if(top>0&&p[top]+4==b[i]){
top--;
}else{
flag=0;
break;
}
}
i++;
}
if(top)printf("NO\n");
else if(flag==1)printf("YES\n");
else printf("NO\n");
}
return 0;
}

与之前的题不同的是,这个需要判断各种括号之间的包含关系是否合法。也是一个大坑

————————————————————————————————————————

T4

计算

题目描述
小明在你的帮助下,破密了Ferrari设的密码门,正要往前走,突然又出现了一个密码门,

门上有一个算式,其中只有 ( ),0 ~ 9 ,+ - * / ^,求出的值就是密码。

小明数学学得不好,还需你帮他的忙。(/ 用整数除法)

输入格式
共 1 行,为一个算式。

输出格式
共 1 行,就是密码。

输入样例
1+(3+2)(7^2+69)/(2)

输出样例
258

#include <bits/stdc++.h>
using namespace std;
stack<int> num;
stack<char> op;
map<char, int> Hash;
void panduan()
{
int b=num.top(); num.pop();
int a=num.top(); num.pop();
char c=op.top(); op.pop(); if(c=='+') num.push(a+b);
if(c=='-') num.push(a-b);
if(c=='*') num.push(a*b);
if(c=='/') num.push(a/b);
if(c=='^') num.push(pow(a,b));
} int main()
{
string s;
cin>>s; Hash['+'] = Hash['-'] = 1;
Hash['*'] = Hash['/'] = 2;
Hash['^'] = 3; for (int i=0;i<s.size();i++)
{
if(s[i]>='0'&&s[i]<='9')
{
int j=i,n=0;
while(j<s.size()&&isdigit(s[j])) n=n*10+(s[j++]-'0');
num.push(n);
i=j-1;
}
else if(s[i]=='(')
{
op.push(s[i]);
}
else if(s[i]==')')
{
while(op.top()!='(') panduan();
op.pop();
}
else
{
while(op.size() && op.top()!='('&&Hash[op.top()]>=Hash[s[i]])
panduan();
if(s[i]=='-'&&(!i||s[i-1]=='('))
{
int j=i+1,n=0;
while(j<s.size()&&isdigit(s[j])) n=n*10+(s[j++]-'0');
num.push(-n);
i=j-1;
}
else op.push(s[i]);
}
} while(op.size()) panduan(); cout<<num.top()<<endl;
return 0;
}

T4也是较为复杂的一题。

个人感觉与之前的计算器类似,此题就是加上括号和平方。

还要注意字符运算顺序。

————————————————————————————————————————

我愿称之为五颜六色。

2022寒假集训day5的更多相关文章

  1. 2022寒假集训day4

    day4(day5补完的) 继续刷搜索方面的题, 初步了解了序列. T1 迷宫问题 题目描述设有一个 n*n 方格的迷宫,入口和出口分别在左上角和右上角.迷宫格子中分别放 0 和 1 ,0 表示可通, ...

  2. 2022寒假集训day2

    day1:学习seach和回溯,初步了解. day2:深度优化搜索 T1 洛谷P157:https://www.luogu.com.cn/problem/P1157 题目描述 排列与组合是常用的数学方 ...

  3. HZNU-ACM寒假集训Day5小结 线段树 树状数组

    线段树 什么时候用线段树 1.统计量可合并 2.修改量可合并 3.通过统计量可直接修改统计量 一句话:满足区间加法即可使用线段树维护信息 理解Lazy Tage 蓝色是要把信息及时维护的节点,红色是本 ...

  4. 2022寒假集训day6

    day6上午还是做四道题T1区域[上机练习]1.编程计算由"*"号围成的下列图形的面积.面积计算方法是统计*号所围成的闭合曲线中水平线和垂直线交点的数目.如下图所示,在 10*10 ...

  5. 2022寒假集训day3

    day3:四道检测题,花了大半天时间. T1 子集和问题 问题描述 子集和问题的一个实例为<S,c>.其中S={x1,x2,-,xn}是一个正整数的集合,c是一个正整数.子集和问题判定是否 ...

  6. Loj #6073.「2017 山东一轮集训 Day5」距离

    Loj #6073.「2017 山东一轮集训 Day5」距离 Description 给定一棵 \(n\) 个点的边带权的树,以及一个排列$ p\(,有\)q $个询问,给定点 \(u, v, k\) ...

  7. 「2017 山东一轮集训 Day5」苹果树

    「2017 山东一轮集训 Day5」苹果树 \(n\leq 40\) 折半搜索+矩阵树定理. 没有想到折半搜索. 首先我们先枚举\(k\)个好点,我们让它们一定没有用的.要满足这个条件就要使它只能和坏 ...

  8. CSU-ACM寒假集训选拔-入门题

    CSU-ACM寒假集训选拔-入门题 仅选择部分有价值的题 J(2165): 时间旅行 Description 假设 Bobo 位于时间轴(数轴)上 t0 点,他要使用时间机器回到区间 (0, h] 中 ...

  9. 2019暑期金华集训 Day5 树上数据结构

    自闭集训 Day5 树上数据结构 前置知识 点分治 边分治 树链剖分 LCT Top Tree LCT时间复杂度 线段树每次查询是严格\(\log n\)的,然而splay维护连续段的时候,如果每次查 ...

随机推荐

  1. 『无为则无心』Python函数 — 30、Python变量的作用域

    目录 1.作用于的概念 2.局部变量 3.全局变量 4.变量的查找 5.作用域中可变数据类型变量 6.多函数程序执行流程 1.作用于的概念 变量作用域指的是变量生效的范围,在Python中一共有两种作 ...

  2. Java中的对象、类、抽象类、接口的理解

    1.对象 对象是个具体的东西,有着明确的属性特征和行为特征. 例如:你手上牵着的女朋友或男朋友就是个具体的对象. 如图中的苏格兰折耳猫,特征是耳朵向下呈折叠状,有着具体的颜色(你看到的颜色),并且和其 ...

  3. IE8和IE9下textarea滚动选中的问题

    在IE8和IE9下如果textarea设置了样式overflow-y:auto;就不可以滚动选中了,应该样式写成overflow:auto;有了纵向滚动实际上就不会出现横向滚动的情况,也没有必要ove ...

  4. 经典定长指令-修改EIP

    1.0x70~0x7F EIP无法像通用寄存器那样用mov来修改,只能通过类似于jz,JNB,JNE JBE,call等的跳转指令来进行修改 条件跳转,后跟一个字节立即数的偏移(有符号),共两个字节. ...

  5. LabVIEW生成.NET的DLL——C#下调用NI数据采集设备功能的一种方法 [原创www.cnblogs.com/helesheng]

    LabVIEW是NI公司的数据采集设备的标准平台,在其上调用NI-DAQmx驱动和接口函数能够高效的开发数据采集和控制程序.但作为一种图形化的开发语言,使用LabVIEW开发涉及算法和流程控制的大型应 ...

  6. 《剑指offer》面试题20. 表示数值的字符串

    问题描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100"."5e2"."-123"."3.1 ...

  7. 《剑指offer》面试题57 - II. 和为s的连续正数序列

    问题描述 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数). 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列. 示例 1: 输入:target ...

  8. 【记录一个问题】云风的协程库 c conroutine无法在android下链接通过

    链接出现以下错误: coroutine.c:139: undefined reference to `getcontext' coroutine.c:146: undefined reference ...

  9. X架构键盘选购指南

    X架构键盘 联想 JME8002(未知) JME7597(推荐) 据说是ThinkPAD键盘的血统. Thinkapad 小红点键盘,据说腿撑容易坏 明基 明基精钢侠 海湾海贝(键程长,不累手,但不易 ...

  10. Superset SSO改造和自定义宏命令

    目录 背景 关于Superset 需要解决的问题 定制化改造 准备环境 改造OAuth SSO 安装依赖 配置SSO 添加自定义的SecurityManager 运行一下吧 自定义宏命令 开启配置 添 ...