[Swust OJ 322]--东6宿舍灵异事件(中缀表达式转化为后缀表达式的简单运用)
题目链接:http://acm.swust.edu.cn/problem/322/
提供两种组合方式:
A&B:代表A和B都为真的时候,A和B组合起来为真,否则为假
A|B:代表A和B里面至少有1个为真的时候,A和B组合起来为真,否则为假
优先级顺序 “括号”>“&”>“|”
例如:a&b|(a|b&c),a=真,b=假,c=真;
那么上式可以这样转化
真&假 | (真|假&真)
假 | (真|假)
假 | 真
真
接下来三个字符,以空格隔开,分表代表a,b,c的真假(T/F);
|
a&b|(a|b&c))
T F T
|
| TRUE |
#include<iostream>
#include<cstring>
#include<stack>
using namespace std;
char s[], v[], a, b, c;
void get_val(char &x){
if (x == 'T')
x = '';
else
x = '';
}
int judge(char x, char y){
if (x == '(') return -;
if (x == '+')
return y == '*' ? - : ;
if (x == '*')
return y == '+' ? : ;
}
void change(){
stack<char> Q;
int i, k = ;
for (i = ; s[i] != '\0'; i++){
if (s[i] == '(')
Q.push(s[i]);
else if (s[i] == ')'){
while (Q.top() != '('){
v[k++] = Q.top();
Q.pop();
}
Q.pop();
}
else{
if (s[i] != '*'&&s[i] != '+')
v[k++] = s[i];
else{
while (!Q.empty() && judge(Q.top(), s[i]) >= ){
v[k++] = Q.top();
Q.pop();
}
Q.push(s[i]);
}
}
}
while (!Q.empty()){
v[k++] = Q.top();
Q.pop();
}
v[k] = '\0';
//cout << v << endl;
}
int get_num(){
stack<int>Q;
int i, x, y, val;
for (i = ; v[i] != '\0'; i++){
if (v[i] != '*'&&v[i] != '+')
Q.push(v[i] - '');
else{
x = Q.top(), Q.pop();
y = Q.top(), Q.pop();
switch (v[i]){
case '*':val = x*y; break;
case '+':val = x + y; break;
}
Q.push(val);
}
}
return Q.top();
}
void mergy(char *s, char a, char b, char c){
for (int i = ; s[i] != '\0'; i++){
if (s[i] == 'a')s[i] = a;
if (s[i] == 'b')s[i] = b;
if (s[i] == 'c')s[i] = c;
if (s[i] == '&')s[i] = '*';
if (s[i] == '|')s[i] = '+';
}
}
int main(){
while (cin >> s){
cin >> a >> b >> c;
get_val(a), get_val(b), get_val(c);
mergy(s, a, b, c);
change();
cout << (get_num() > ? "TRUE\n" : "FALSE\n");
}
return ;
}
[Swust OJ 322]--东6宿舍灵异事件(中缀表达式转化为后缀表达式的简单运用)的更多相关文章
- SWUST OJ 东6宿舍灵异事件(0322)
东6宿舍灵异事件(0322) Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 88 Accepted: 31 Descriptio ...
- 用MsmqBinding投送message出现的一个灵异事件 【第二篇】
一直都在用Msmqbinding,也一直忽视了message里面的内容格式是什么样的,这也是微软给我们高层封装带给我们的开发效率,但同时一旦中间出了什么问题, 就不知道从何查起了.有个需求是这样的,服 ...
- MySQL 灵异事件一则 -- desc报语法错误
今天有一开发同学找到我,说查询SQL中倒序报错,不明原因,于是奔赴工位现场研究情况. 果然,只要SQL中带有desc 就会报错,而ASC没问题. 哪怕desc放在句首用作explain也会报错. 报错 ...
- 记录一起k8s的service服务名解析灵异事件
故障现象: 基于alpine 3.7的镜像,构建的spring boot服务及eureka服务器. 在使用deployment和service文件部署到k8s集群之后, 在不同的pod内部,访问ser ...
- android中listview点击事件失效的灵异事件
首先说明一下我想实现的功能: 点击某个item之后,让其颜色发生变化.如果变化网上有很多例子,我就不班门弄斧了.Listview之所以点击没有反应是因为上图中绿色部分(自己定义的一个继承BaseAda ...
- mybatis缓存,从一个“灵异”事件说起
刚准备下班走人,被一开发同事叫住,让帮看一个比较奇怪的问题:Mybatis同一个Mapper接口的查询方法,第一次返回与第二次返回结果不一样,百思不得其解! 问题 Talk is cheap. Sho ...
- redis系列-14点的灵异事件
概述 项目组每天14点都会遭遇惊魂时刻.一条条告警短信把工程师从午后小憩中拉回现实.之后问题又神秘消失.是PM喊你上工了?还是服务器给你开玩笑?下面请看工程师如何一步一步揪出真凶,解决问题. 如果不想 ...
- AngularJS进阶(十四)AngularJS灵异代码事件
AngularJS灵异代码事件 注:请点击此处进行充电! 事情原委 router_sys.js源代码如下: 自己在html路由跳转的代码如下: 但是在实际路由过程中,却路由到了下面的状态,相应的页面中 ...
- [Swust OJ 404]--最小代价树(动态规划)
题目链接:http://acm.swust.edu.cn/problem/code/745255/ Time limit(ms): 1000 Memory limit(kb): 65535 Des ...
随机推荐
- C#代码模拟http发送get和post请求
private string HttpPost(string Url, string postDataStr) { HttpWebRequest request = (HttpWebRequest)W ...
- Qt中Ui名字空间以及setupUi函数的原理和实现 <转>
用最新的QtCreator选择GUI的应用会产生含有如下文件的工程 下面就简单分析下各部分的功能. .pro文件是供qmake使用的文件,不是本文的重点[不过其实也很简单的],在此不多赘述. 所以呢, ...
- 分组求和SQL示例
1.ROLLUP和CUBE函数,自动汇总数据 select * from test_tbl的数据这样的 col_a col_b col_c ---- ----- ...
- 二代USBKEY与一代USBKEY有什么区别?使用时需要注意什么?
二代USBKEY相较于一代USBKEY产品,增加了屏幕以及按键功能:可通过二代USBKEY产品的屏幕查看交易或操作信息,通过按键的方式进行上翻.下翻.确认.取消等操作. 二代USBKEY产品采用Mic ...
- Delphi中的内存对齐 与 Packed关键字
以delphi为例:TTest = recordc1: char;i1: Integer;c2: char;c3: Char;end;这个结构如果用sizeof取其占用的内存大小,是多少呢,是1+4+ ...
- Java并发编程总结3——AQS、ReentrantLock、ReentrantReadWriteLock(转)
本文内容主要总结自<Java并发编程的艺术>第5章——Java中的锁. 一.AQS AbstractQueuedSynchronizer(简称AQS),队列同步器,是用来构建锁或者其他同步 ...
- php如何在原来的时间上加一天?一小时
php如何在原来的时间上加一天?一小时? <?phpecho "今天:",date('Y-m-d H:i:s'),"<br>";echo &q ...
- 基于Visual C++2013拆解世界五百强面试题--题11-查找数字出现次数
在排序数组中,找出给定数字出现的次数比如{ 1, 2, 2, 2, 3}中2的出现次数是3次 我们可使用二分查找发,分别查找出2最先出现的位置和最后出现的位置相减即可. 下面是上代码: #includ ...
- pyrailgun 0.24 : Python Package Index
pyrailgun 0.24 : Python Package Index pyrailgun 0.24 Download pyrailgun-0.24.zip Fast Crawler For Py ...
- HDU 1711 Number Sequence KMP
题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=1711 AC代码: #include <iostream> #include <cs ...