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

题意:p,q,r,s,t,是五个二进制数。

K,A,N,C,E,是五个运算符。

K:&&

A:||
N:!

C:(!w)||x

E:w==x

题意是让求如果对于五个数的所有情况一个式子总是恒为1,那么这个式子就是tautology。输出tautology。

否则输出not。

5个数,最多有2^5种情况。

判断式子是不是恒为1,只需要从后往前判断即可。

这题好长时间没看懂,代码也是看网上大神的

 1 #include<iostream>
 2  #include<cstring>
 3  #include<cstdio>
 4  #include<cstdlib>
 5  #include<algorithm>
 6  using namespace std;
 7  char str[110];
 8  int stack[110];
 9
10  int check()
11  {
12      int pp,qq,rr,ss,tt,n,i,top;
13      n=strlen(str);
14      for(pp = 0; pp < 2; pp++)
15          for(qq = 0; qq < 2; qq++)
16              for(rr = 0; rr < 2; rr++)
17                  for(ss = 0; ss < 2; ss++)
18                      for(tt = 0; tt < 2; tt++)
19                      {
20                          top = 0;
21                          for(i = n-1; i >= 0; i--)
22                          {
23                              if(str[i]=='q') stack[top++]=qq;
24                              if(str[i]=='p') stack[top++]=pp;
25                              if(str[i]=='r') stack[top++]=rr;
26                              if(str[i]=='t') stack[top++]=tt;
27                              if(str[i]=='s') stack[top++]=ss;
28                              if(str[i]=='K') top--,stack[top-1]=(stack[top-1]&&stack[top]);
29                              if(str[i]=='A') top--,stack[top-1]=(stack[top-1]||stack[top]);
30                              if(str[i]=='N') stack[top-1]=!stack[top-1];
31                              if(str[i]=='C') top--,stack[top-1]=((!stack[top-1])||stack[top]);
32                              if(str[i]=='E') top--,stack[top-1]=((stack[top-1])==stack[top]);
33                          }
34                          if(top!=1||stack[top-1]!=1)
35                              return 0;
36                      }
37
38      return 1;
39  };
40
41  int main()
42  {
43      while(gets(str)&&str[0]!='0')
44      {
45          if(check())
46              cout<<"tautology"<<endl;
47          else
48              cout<<"not"<<endl;
49      }
50      return 0;
51  }
52  

转载于:https://www.cnblogs.com/bfshm/p/3225289.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. pku 1830 开关问题(构造矩阵+高斯消元)

    开关问题 Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 4653   Accepted: 1675 Description ...

  7. POJ 2018 Best Cow Fences (二分答案构造新权值 or 斜率优化)

    $ POJ~2018~Best~Cow~ Fences $(二分答案构造新权值) $ solution: $ 题目大意: 给定正整数数列 $ A $ ,求一个平均数最大的长度不小于 $ L $ 的子段 ...

  8. 构造法 | 栈 | POJ3295.Tautology

    构造法 | 栈 | POJ3295.Tautology Link:Tautology Description WFF 'N PROOF is a logic game played with dice ...

  9. POJ 2396 构造矩阵(上下流)

    题意:       要求构造一个矩阵,给你行和,列和,还有一些点的上下范围,输出一个满足题意的矩阵. 思路:       这个题目很经典,这是自己看上下流后接触的第一道题,感觉很基础的一道题目,现在我 ...

  10. poj 2201 构造

    这个题目的构造方法应该还算是很好想的,先给a按照从小到大排序,然后按顺序插入数据,构造一棵二叉查找树,而且50000的数据,nlogn的做法,应该还是很好的.不过这个题目的编码比想象中要麻烦一点,并且 ...

最新文章

  1. P2B: Point-to-Box Network 点云目标跟踪(CVPR 2020)
  2. HttpURLConnection与HttpClient浅析---转
  3. 【原理+实战+视频+源码】java更新无法下载所需安装文件
  4. 计算机学机械制图吗,机械制图与计算机绘图(少学时·任务驱动模式)
  5. python利器怎么编程-Linux 利器- Python 脚本编程入门(一)
  6. 51nod 1525 重组公司
  7. Spring Boot 2 实战:利用Redis的Geo功能实现查找附近的位置
  8. 数据结构 --- 堆
  9. access的ole对象换成mysql_ACCESS的Ole对象读取写入
  10. 彻底卸载oracle
  11. DevExpress DXperience 的ASPxFilterControl 不显示 Like 菜单的方法
  12. Maximum call stack size exceeded 如何解决?
  13. 大漠插件最新版7.2123
  14. 新版代挂网站PHP源码+去除授权/支持燃鹅代抽
  15. 泛在操作系统实践案例
  16. 从单核CPU系统角度看并发问题
  17. 批量下载人像图片的技巧,POCO相册图片如何下载的方法
  18. Android 获取app启动来源(是被谁启动的、被哪个第三方app启动?)
  19. 避免学习Linux走弯路
  20. 波波:App Store改版深入测评,生态改变,行业大洗牌

热门文章

  1. 嵌入式Linux上没有x-window系统环境运行qt程序的方法
  2. C/C++开发_C语言里类似C++的构造与析构
  3. iOS之app审核遭遇5.2.1的条例被拒
  4. JavaScript核心语法学习部分(七)
  5. 【Angularjs文档翻译及实例】DOM事件
  6. jquery cookie 插件 (支持json对象) 可以跟jquery 集成 也可以单独使用
  7. 体验:Office SharePoint foundation 2010 Beta版安装使用
  8. [独库骑行之我们路过高山]玉希莫勒盖达坂顶上的震撼
  9. express url跳转(重定向)的实现:res.location() res.redirect()
  10. jquery实现同时展示多个tab标签+左右箭头实现来回滚动