博客
关于我
【ACM】POJ 3295 Tautology
阅读量:363 次
发布时间:2019-03-04

本文共 1335 字,大约阅读时间需要 4 分钟。

  该题的意思就是:给你一个表达式,判断它是否为永真式,若是输出tautology,否输出not。

  解题步骤:1.根据题内所示表格构造K,A,N,C,E的运算
                   2.枚举p,q,r,s,t的32种情况
                   3.表达式的计算
  注意事项:1.表达式为前置表达式,需从数组末尾开始遍历
                   2.全局变量每循环一次需重置
  ps:p,q,r,s,t的存储可用数组实现也可用map实现

 

#include 
#include
#include
#include
#include
using namespace std;char a[110];int num[5];int sign=1;//标记是否均符合要求 stack
cal;//运算栈int len;int calculate()//前缀表达式的运算 { int m,n; while(!cal.empty()) cal.pop(); for(int i=len-1;i>=0;i--) { if(a[i]=='p')//操作数部分 cal.push(num[0]); else if(a[i]=='q') cal.push(num[1]); else if(a[i]=='r') cal.push(num[2]); else if(a[i]=='s') cal.push(num[3]); else if(a[i]=='t') cal.push(num[4]); else//操作符部分 { m=cal.top();//取最顶上一个操作数,因为有非运算所以只取一个 cal.pop(); if(a[i]=='N') cal.push(!m); else { n=cal.top(); cal.pop(); if(a[i]=='K') cal.push(m&&n); else if(a[i]=='A') cal.push(m||n); else if(a[i]=='C') { if(m==1&&n==0) cal.push(0); else cal.push(1); } else if(a[i]=='E') { if(m==n) cal.push(1); else cal.push(0); } } } } return cal.top();} int main(){ while(cin.getline(a,110)) { if(a[0]=='0') break; len=strlen(a); for(int p=0;p<2&&sign;p++) { num[0]=p; for(int q=0;q<2&&sign;q++) { num[1]=q; for(int r=0;r<2&&sign;r++) { num[2]=r; for(int s=0;s<2&&sign;s++) { num[3]=s; for(int t=0;t<2&&sign;t++) { num[4]=t; if(calculate()==0) sign=0; } } } } } if(!sign) cout<<"not"<

 

转载地址:http://knzg.baihongyu.com/

你可能感兴趣的文章
Mac OS 12.0.1 如何安装柯美287打印机驱动,刷卡打印
查看>>
MangoDB4.0版本的安装与配置
查看>>
Manjaro 24.1 “Xahea” 发布!具有 KDE Plasma 6.1.5、GNOME 46 和最新的内核增强功能
查看>>
mapping文件目录生成修改
查看>>
MapReduce程序依赖的jar包
查看>>
mariadb multi-source replication(mariadb多主复制)
查看>>
MariaDB的简单使用
查看>>
MaterialForm对tab页进行隐藏
查看>>
Member var and Static var.
查看>>
memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用
查看>>
memcached高速缓存学习笔记003---利用JAVA程序操作memcached crud操作
查看>>
Memcached:Node.js 高性能缓存解决方案
查看>>
memcache、redis原理对比
查看>>
memset初始化高维数组为-1/0
查看>>
Metasploit CGI网关接口渗透测试实战
查看>>
Metasploit Web服务器渗透测试实战
查看>>
MFC模态对话框和非模态对话框
查看>>
Moment.js常见用法总结
查看>>
MongoDB出现Error parsing command line: unrecognised option ‘--fork‘ 的解决方法
查看>>
mxGraph改变图形大小重置overlay位置
查看>>