博客
关于我
【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/

你可能感兴趣的文章
webpack loader配置全流程详解
查看>>
mysql主从复制,读写分离,半同步复制实现
查看>>
MySQL主从失败 错误Got fatal error 1236解决方法
查看>>
MySQL主从架构与读写分离实战
查看>>
MySQL主从篇:死磕主从复制中数据同步原理与优化
查看>>
mysql主从配置
查看>>
MySQL之2003-Can‘t connect to MySQL server on ‘localhost‘(10038)的解决办法
查看>>
MySQL之CRUD
查看>>
MySQL之DML
查看>>
Mysql之IN 和 Exists 用法
查看>>
MYSQL之REPLACE INTO和INSERT … ON DUPLICATE KEY UPDATE用法
查看>>
MySQL之SQL语句优化步骤
查看>>
MYSQL之union和order by分析([Err] 1221 - Incorrect usage of UNION and ORDER BY)
查看>>
Mysql之主从复制
查看>>
MySQL之函数
查看>>
mysql之分组查询GROUP BY,HAVING
查看>>
mysql之分页查询
查看>>
Mysql之备份与恢复
查看>>
mysql之子查询
查看>>
MySQL之字符串函数
查看>>