http://poj.org/problem?id=3295

借助的是大神的解题报告的写法。

大致题意:

输入由p、q、r、s、t、K、A、N、C、E共10个字母组成的逻辑表达式。

当中p、q、r、s、t的值为1(true)或0(false),即逻辑变量;

K、A、N、C、E为逻辑运算符,

K --> and: x && y

A --> or: x || y

N --> not : !x

C --> implies : (!x)||y

E --> equals : x==y

问这个逻辑表达式是否为永真式。

PS:输入格式保证是合法的。

代码操作:

1、把变量(p,q,r,s,t)替换成0,1。

(替换有规律。见数组num。共32中可能);

2、用栈将字符串倒序当后缀式运算。

3、推断运算完毕后栈底元素是否为1,假设不为0跳出输出not。

4、若32种可能都为1。则输出tautology;

#include<string.h>
#include<stdio.h>
const int maxn=120;
int sta[maxn]; //数组模拟堆栈
char str[maxn];
int p,q,r,s,t;
void doit()
{int top=0;int len=strlen(str);for(int i=len-1;i>=0;i--){if(str[i]=='p') sta[top++]=p;else if(str[i]=='q') sta[top++]=q;else if(str[i]=='r') sta[top++]=r;else if(str[i]=='s') sta[top++]=s;else if(str[i]=='t') sta[top++]=t;else if(str[i]=='K'){int t1=sta[--top];int t2=sta[--top];sta[top++]=(t1&&t2);}else if(str[i]=='A'){int t1=sta[--top];int t2=sta[--top];sta[top++]=(t1||t2);}else if(str[i]=='N'){int t1=sta[--top];sta[top++]=(!t1);}else if(str[i]=='C'){int t1=sta[--top];int t2=sta[--top];if(t1==1&&t2==0) sta[top++]=0;else sta[top++]=1;}else if(str[i]=='E'){int t1=sta[--top];int t2=sta[--top];if((t1==1&&t2==1)||(t1==0&&t2==0)) sta[top++]=1;else sta[top++]=0;}}
}bool solve()
{   //5重循环,枚举2^5  32种可能 假设都满足 return 1 for(p=0;p<2;p++)for(q=0;q<2;q++)for(r=0;r<2;r++)for(s=0;s<2;s++)for(t=0;t<2;t++){doit();if(sta[0]==0)return 0;}return 1;
}int main()
{while(scanf("%s",&str)){if(strcmp(str,"0")==0)break;if(solve()) printf("tautology\n");else printf("not\n");}return 0;
}

转载于:https://www.cnblogs.com/ldxsuanfa/p/9954873.html

poj-3295 Tautology相关推荐

  1. poj 3295 Tautology(经典构造算法题)

    思路:1)使用递归模拟,用备忘录优化,否则超时 另外:学到了一个不用递归即可枚举构造0-1序列的方法 for(i=0;i<32;i++)for(j=0;j<5;j++)arr[j]=(i& ...

  2. POJ 3295: Tautology 递归的永真式

    原题链接:Tautology 题目大意:p.q.r.s.t是逻辑变量,K.A.N.C.E是逻辑操作,相应的真值表已经给出.要求给定一个逻辑表达式,判断其是否为永真式,即无论其中的逻辑变量取值如何,其结 ...

  3. 【poj 3295】Tautology (栈)

    做法:穷举五个变量的可能取值.对于每种情况,建立一个栈,从右往左遍历字符串,字符代表数字时入栈,代表运算符时取出一定量的数字,运算后把结果压入栈.最后剩下的就是这个运算式的结果了. 在所有的取值下结果 ...

  4. php验证码百度ocr识别,利用百度OCR实现验证码自动识别

    在爬取网站的时候都遇到过验证码,那么我们有什么方法让程序自动的识别验证码呢?其实网上已有很多打码平台,但是这些都是需要money.但对于仅仅爬取点数据而接入打码平台实属浪费.所以百度免费ocr正好可以 ...

  5. poj日记(3295)

    转载:https://www.cnblogs.com/kuangbin/archive/2012/08/13/2636855.html Description WFF 'N PROOF is a lo ...

  6. POJ ZOJ题目分类

    POJ,ZOJ题目分类(多篇整合版,分类很细致,全面) 标签: 题目分类POJ整理 2015-04-18 14:44 1672人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: ACM资料(5) ...

  7. POJ,ZOJ题目分类(多篇整合版,分类很细致,全面)

    水题: 3299,2159,2739,1083,2262,1503,3006,2255,3094 初级: 一.基本算法:        (1)枚举 (1753,2965)       (2)贪心(13 ...

  8. NOIP 好题推荐(DP+搜索+图论)POJ ZOJ

    NOIP好题推荐(DP+搜索+图论)POJ ZOJ 1370 Gossiping (数论->模线性方程有无解的判断)+(图论->DFS)  1090 Chain ->格雷码和二进制码 ...

  9. POJ 3268 D-Silver Cow Party

    http://poj.org/problem?id=3268 Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently ...

  10. poj 2559 Largest Rectangle in a Histogram 栈

    // poj 2559 Largest Rectangle in a Histogram 栈 // // n个矩形排在一块,不同的高度,让你求最大的矩形的面积(矩形紧挨在一起) // // 这道题用的 ...

最新文章

  1. 计算机程序的思维逻辑 (63) - 实用序列化: JSON/XML/MessagePack
  2. python接口测试demo_python http接口自动化测试简单demo
  3. 二叉树的遍历(算法导论第三版12.1-4)(包含先序遍历,后序遍历和中序遍历)
  4. 软件工程汇编程序设计——分支程序实验,循环程序实验,综合程序设计实验
  5. numpy使用where函数定位满足条件的下标
  6. 安装oracle10g程序异常终止,win7系统安装oracle10g提示程序异常终止的解决方法
  7. 嵌入式linux led驱动有几种写法,嵌入式Linux字符驱动LED灯设计
  8. 【排列组合】ZSC1076: 数学、不容易系列之三——考新郎
  9. sgu 139 Help Needed!
  10. PAIP.ASP重复INCLUDE包含引起的重定义错误解决方案
  11. 易班显示服务器错误,易班常见问题汇总
  12. 通用接口测试用例设计
  13. 善用win7中的资源监视器
  14. pdo_mysql扩展库_MySQL数据库之PDO扩展
  15. 京东双11准点秒杀脚本
  16. mysql存储过程和mysql函数
  17. 设置谷歌浏览器安全级别
  18. Kafka常用shell脚本命令
  19. Uncaught TypeError: Cannot read property ‘then‘ of undefined
  20. vue发送请求时遇到index.vue?6ced:90 Uncaught (in promise) TypeError: Cannot read properties of undefined

热门文章

  1. 新手小白适合学习什么编程语言
  2. No symbols loaded
  3. 北京亚控笔试题目(2014年10月9日)
  4. DLNA使用设置教程
  5. java poodle,Java http客户端和POODLE
  6. Reliance Jio 4G网速最快 超过沃达丰及Idea
  7. 极客ios开发工程师 全套视频教程 教学视频
  8. jena java_对Jena的简单理解和一个例子
  9. 手把手教你搭建SpringCloud项目(二)生产者与消费者
  10. 有一张厚度为0.1mm的纸,假设它足够大,重复将其对折,问对折多少次之后,其厚度可达(再对折一次就超过)珠穆朗玛峰的高度?(C语言)