给你一个表达式,其包括一些0,1变量和一些逻辑运算法,让你推断其是否为永真式。

计算表达式的经常使用两种方法:1、递归; 2、利用栈。

code(递归实现)

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <string>
using namespace std;
char str[2000];
int pos;
bool calc(int bit)
{
pos++;
switch(str[pos])
{
case 'p': return (bit)&1;
case 'q': return (bit>>1)&1;
case 'r': return (bit>>2)&1;
case 's': return (bit>>3)&1;
case 't': return (bit>>4)&1;
case 'K': return calc(bit) &calc(bit);
case 'A': return calc(bit) | calc(bit);
case 'N': return !calc(bit);
case 'C': return (!calc(bit)) | calc(bit);
case 'E': return calc(bit) == calc(bit);
default:;
}
}
int main()
{
int bit;
bool mark;
while(~scanf("%s", str) && str[0]!='0')
{
mark = true;
for(bit=0; bit<32; ++bit)
{
pos = -1;
if( !calc(bit) )
{
mark = false;
break;
}
}
if(mark) printf("tautology");
else printf("not");
}
return 0;
}

最新文章

  1. 让代码更简单——自定义toBean实现
  2. springboot: mybatis集成参考
  3. 【目录】Newlife XCode组件相关文章目录
  4. ubuntu下vim输入中文和中文显示
  5. sentinel搭建redis集群经验总结
  6. [cocos2dx]让CCScrollView支持分页
  7. DataTable .Load 方法 (IDataReader)
  8. linux查看端口是否已开启和查看文件数
  9. CKEditor (Toolbar Definition)工具栏自定义配置
  10. tencent://message协议
  11. 【制作镜像Win*】环境准备
  12. 【USACO 1.2.4】回文平方数
  13. sharepoint 2013实践
  14. MyBatis通过Mapper动态代理来实现curd操作
  15. 神奇的操作——线段树合并(例题: BZOJ2212)
  16. 20181011xlVba提取邮箱手机号码
  17. node api 之:stream - 流
  18. MIPI Alliance (MIPI联盟)
  19. bat如何批量删除指定部分文件夹名的文件夹
  20. log4j2分析总结(一)

热门文章

  1. Java ArrayList add(int index, E element) example
  2. perl eval函数
  3. HTTP协议的请求和响应学习
  4. Delphi的DLL里如何实现定时器功能?
  5. HDU 4868 Information Extraction(2014 多校联合第一场 H)
  6. 工信部表态支持Linux,可是Linux又是什么呢?
  7. PySide——Python图形化界面
  8. Qml 写的弹出层控件(13篇博客)
  9. Shell printf 命令
  10. Find命令, find用法,