东6宿舍灵异事件(0322)

Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 88 Accepted: 31
 
Description
将军听说最近东6闹鬼了,作为一个无神论者,将军当然不相信。但是这个传言已经泛滥了,许多人都在说这个事情,将军从每个人那里听到一个传言,将军可以容易的就知道这个传言是真还是假,但是当一大堆消息组合起来,将军就不知道了,所以将军就找到了你。 
提供两种组合方式: 
A&B:代表A和B都为真的时候,A和B组合起来为真,否则为假 
A|B:代表A和B里面至少有1个为真的时候,A和B组合起来为真,否则为假 
优先级顺序 “括号”>“&”>“|” 
例如:a&b|(a|b&c),a=真,b=假,c=真; 
那么上式可以这样转化 
真&假 | (真|假&真) 
假 | (真|假) 
假 | 真 

 
Input
有多组测试数据,每组测试数据共两行,第一行是一个逻辑范式,数据不用判错; 
接下来三个字符,以空格隔开,分表代表a,b,c的真假(T/F); 
 
Output
对于每一组数据,输出最终的结果(TRUE or FALSE);
 
Sample Input
a&b|(a|b&c)
T F T
 
Sample Output
TRUE
 
Hint
SCPC - ChenYi
 
 #include<stdio.h>
#include<string.h> struct
{
char ch;
int pri;
}lpri[]={{'=',},{'(',},{'+',},{'*',},{')',}},rpri[]={{'=',},{'(',},{'+',},{'*',},{')',}}; void Change(char *a)
{
if(*a=='T')
*a='';
else
*a='';
} void Transform(char exp[],char a,char b,char c)
{
int len,i;
len=strlen(exp);
for(i=;i<len;i++)
{
if(exp[i]=='a')
exp[i]=a;
if(exp[i]=='b')
exp[i]=b;
if(exp[i]=='c')
exp[i]=c;
if(exp[i]=='&')
exp[i]='*';
if(exp[i]=='|')
exp[i]='+';
}
} int Lpri(char ch)
{
int i;
for(i=;i<;i++)
{
if(ch==lpri[i].ch)
{
return lpri[i].pri;
}
}
} int Rpri(char ch)
{
int i;
for(i=;i<;i++)
{
if(ch==rpri[i].ch)
{
return rpri[i].pri;
}
}
} void expTOpostexp(char exp[],char postexp[])
{
int len,top=-,t=,i;
char op[];
len=strlen(exp);
for(i=;i<len;)
{
if(exp[i]==''||exp[i]=='')
{
postexp[t++]=exp[i++];
}
else
if(Lpri(op[top])<Rpri(exp[i])||top==-)//最开始栈顶是 -1
{
op[++top]=exp[i++];
}
else
if(Lpri(op[top])>Rpri(exp[i]))
{
postexp[t++]=op[top--];
}
else
if(Lpri(op[top])==Rpri(exp[i]))
{
top--;
i++;
}
}
for(i=top;i>-;i--)//top就是栈顶的指针
{
postexp[t++]=op[top--];
}
postexp[t]='\0';
//printf("postexp:%s\n",postexp);
} int Judge(char postexp[])
{
int top=-,len,i,num[],a,b;
len=strlen(postexp);
for(i=;i<len;i++)
{
if(postexp[i]==''||postexp[i]=='')
num[++top]=postexp[i]-'';
if(postexp[i]=='+')
{
a=num[top--];
b=num[top];
num[top]=a+b;
}
if(postexp[i]=='*')
{
a=num[top--];
b=num[top];
num[top]=a*b;
}
}
return num[];
} int main()
{
char exp[],postexp[];
char a,b,c;
while(scanf("%s",exp)!=EOF)
{
getchar();
scanf("%c",&a);
getchar();
scanf("%c",&b);
getchar();
scanf("%c",&c);
Change(&a);
Change(&b);
Change(&c);
Transform(exp,a,b,c);
//printf("exp:%s\n",exp);
expTOpostexp(exp,postexp);
if(Judge(postexp))
printf("TRUE\n");
else
printf("FALSE\n");
}
return ;
}

注:与运算可以看成是 *(乘法),或运算可看成是 +(加法),FALSE=0 TRUE=1,中缀表达式变后缀表达式并求值。

SWUST OJ 东6宿舍灵异事件(0322)的更多相关文章

  1. [Swust OJ 322]--东6宿舍灵异事件(中缀表达式转化为后缀表达式的简单运用)

    题目链接:http://acm.swust.edu.cn/problem/322/ Time limit(ms): 1000 Memory limit(kb): 65535     Descripti ...

  2. 用MsmqBinding投送message出现的一个灵异事件 【第二篇】

    一直都在用Msmqbinding,也一直忽视了message里面的内容格式是什么样的,这也是微软给我们高层封装带给我们的开发效率,但同时一旦中间出了什么问题, 就不知道从何查起了.有个需求是这样的,服 ...

  3. MySQL 灵异事件一则 -- desc报语法错误

    今天有一开发同学找到我,说查询SQL中倒序报错,不明原因,于是奔赴工位现场研究情况. 果然,只要SQL中带有desc 就会报错,而ASC没问题. 哪怕desc放在句首用作explain也会报错. 报错 ...

  4. 记录一起k8s的service服务名解析灵异事件

    故障现象: 基于alpine 3.7的镜像,构建的spring boot服务及eureka服务器. 在使用deployment和service文件部署到k8s集群之后, 在不同的pod内部,访问ser ...

  5. android中listview点击事件失效的灵异事件

    首先说明一下我想实现的功能: 点击某个item之后,让其颜色发生变化.如果变化网上有很多例子,我就不班门弄斧了.Listview之所以点击没有反应是因为上图中绿色部分(自己定义的一个继承BaseAda ...

  6. mybatis缓存,从一个“灵异”事件说起

    刚准备下班走人,被一开发同事叫住,让帮看一个比较奇怪的问题:Mybatis同一个Mapper接口的查询方法,第一次返回与第二次返回结果不一样,百思不得其解! 问题 Talk is cheap. Sho ...

  7. redis系列-14点的灵异事件

    概述 项目组每天14点都会遭遇惊魂时刻.一条条告警短信把工程师从午后小憩中拉回现实.之后问题又神秘消失.是PM喊你上工了?还是服务器给你开玩笑?下面请看工程师如何一步一步揪出真凶,解决问题. 如果不想 ...

  8. AngularJS进阶(十四)AngularJS灵异代码事件

    AngularJS灵异代码事件 注:请点击此处进行充电! 事情原委 router_sys.js源代码如下: 自己在html路由跳转的代码如下: 但是在实际路由过程中,却路由到了下面的状态,相应的页面中 ...

  9. 高效开发之SASS篇 灵异留白事件——图片下方无故留白 你会用::before、::after吗 link 与 @import之对比 学习前端前必知的——HTTP协议详解 深入了解——CSS3新增属性 菜鸟进阶——grunt $(#form :input)与$(#form input)的区别

    高效开发之SASS篇   作为通往前端大神之路的普通的一只学鸟,最近接触了一样稍微高逼格一点的神器,特与大家分享~ 他是谁? 作为前端开发人员,你肯定对css很熟悉,但是你知道css可以自定义吗?大家 ...

随机推荐

  1. this, 闭包,箭头函数

    闭包写法 //后台每个执行环境都有一个表示变量的对象---变量对象 //例如compare()函数调用 //compare的执行环境而言,其作用域链包含两个变量对象 本地活动对象 全局活动对象 全局变 ...

  2. GCC生成动态链接库(.so文件):-shared和-fPIC选项

    Linux 下动态链接库(shared object file,共享对象文件)的文件后缀为.so,它是一种特殊的目标文件(object file),可以在程序运行时被加载(链接)进来.使用动态链接库的 ...

  3. ESLint javascript格式要求

    首行缩进2个空格 eslint: indent functionhello (name) { console.log('hi', name) } 字符串使用单引号(除了避免转义) eslint: qu ...

  4. Sublime Text 3 快捷键的汇总

    Sublime Text 3非常实用,但是想要用好,一些快捷键不可或缺,所以转了这个快捷键汇总. 选择类 Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本. Alt+F3 选中文本按 ...

  5. python+selenium自动化--参数化(paramunittest)

    unnittest的参数化模块-paramunittest paramunittest是unittest实现参数化的一个专门的模块,可以传入多组参数,自动生成多个用例 两种用法 import unit ...

  6. Spring Boot 默认的指标数据从哪来的?

    了解有关 Spring Boot 默认指标及其来源的更多信息. 您是否注意到 Spring Boot 和 Micrometer 为您的应用生成的所有默认指标?如果没有 - 您可以将 actuator  ...

  7. ubuntu下pycharm的安装

    打开百度,输入pycharm下载,点击下图的第二个英文链接. 进入后选择linux下的Community进行下载,而左边的Professional是要钱购买的,当然花钱的体验效果肯定会更好. 下载完成 ...

  8. Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-2

    1 MATLAB并行计算-从个人桌面到远程集群和云(陈伟/魏奋)视频摘录笔记 https://cn.mathworks.com/videos/parallel-computing-with-matla ...

  9. redis day02 下

    位图:是二进制数据(0101101010)2^32 强势点: 01_login :101110(比如:第一天登录,二天没登录) 传统的字符串解决方案中 记录用户登录日期  统计堪忧 01_login_ ...

  10. [LC] 93. Restore IP Addresses

    Given a string containing only digits, restore it by returning all possible valid IP address combina ...