题目链接

分析:

最多有五个变量,所以枚举所有的真假值,从后向前借助于栈验证是否为永真式。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <stack> using namespace std; const int maxn = + ; stack<bool> S;
char s[maxn];
bool hash[], ans; void check(char pos) { if(s[pos] == 'N') {
bool x = S.top(); S.pop();
S.push(!x);
} else if(s[pos] >= 'p' && s[pos] <= 't') {
S.push(hash[s[pos]]);
} else {
bool x, y;
x = S.top(); S.pop();
y = S.top(); S.pop(); if(s[pos] == 'K') S.push(x&y);
else if(s[pos] == 'A') S.push(x|y);
else if(s[pos] == 'C') S.push(!x | y); //即蕴含
else if(s[pos] == 'E') S.push(!(x^y));
} } int main() {
//freopen("my.txt", "r", stdin);
while(scanf("%s", s) == ) {
if(s[] == '') break;
ans = true;
int i; for(i=; i<(<<); i++) {
hash['p'] = i & ;
hash['q'] = i & (<<);
hash['r'] = i & (<<);
hash['s'] = i & (<<);
hash['t'] = i & (<<); int pos = strlen(s)-; while(pos >= ) {
check(pos);
pos--;
} ans = S.top(); S.pop(); if(ans == false) { printf("not\n"); break; }
} if(i >= (<<)) printf("tautology\n");
} return ;
}

另一种写法

该写法参考自Disuss:http://poj.org/showmessage?message_id=168123(里面对于莫名其妙的错误还有讲解,不错)

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <stack> using namespace std; const int maxn = + ; char s[maxn];
int c_s, value; bool getval() {
bool t1, t2; switch(s[c_s++]) {
case 'p': return (value & (<<));
case 'q': return (value & (<<));
case 'r': return (value & (<<));
case 's': return (value & (<<));
case 't': return (value & (<<)); case 'N': return !getval();
case 'K': t1 = getval(); t2 = getval(); return t1 & t2;
case 'A': t1 = getval(); t2 = getval(); return t1 | t2;
case 'C': t1 = getval(); t2 = getval(); return (!t1 | t2);
case 'E': t1 = getval(); t2 = getval(); return (!(t1^t2));
}
} int main() {
// freopen("my.txt", "r", stdin);
while(scanf("%s", s) == ) {
if(s[] == '') break; for(value = ; value < (<<); value++){
c_s = ;
if(!getval()) { printf("not\n"); break; }
} if(value >= (<<)) printf("tautology\n");
} return ;
}

POJ3295 Tautology(枚举)的更多相关文章

  1. [POJ3295]Tautology

    [POJ3295]Tautology 试题描述 WFF 'N PROOF is a logic game played with dice. Each die has six faces repres ...

  2. POJ3295 Tautology(栈+枚举)

    Description WFF 'N PROOF is a logic game played with dice. Each die has six faces representing some ...

  3. poj3295 Tautology —— 构造法

    题目链接:http://poj.org/problem?id=3295 题意: 输入由p.q.r.s.t.K.A.N.C.E共10个字母组成的逻辑表达式, 其中p.q.r.s.t的值为1(true)或 ...

  4. POJ3295——Tautology

    Tautology Description WFF 'N PROOF is a logic game played with dice. Each die has six faces represen ...

  5. POJ-3295 Tautology (构造)

    https://vjudge.net/problem/POJ-3295 题意 有五种运算符和五个参数,现在给你一个不超过100字符的算式,问最后结果是否恒为1? 分析 首先明确各运算符的意义,K(&a ...

  6. POJ3295 Tautology重言式

    Tautology 思路很简单,对于p.q.r.s.t暴力枚举是0还是1,判断即可.判断时像写表达式求值那样用栈.为了方便可以从后往前,因为最后一个肯定不是运算.那几个奇奇怪怪的函数可以找规律然后转为 ...

  7. poj3295 Tautology , 计算表达式的值

    给你一个表达式,其包括一些0,1变量和一些逻辑运算法,让你推断其是否为永真式. 计算表达式的经常使用两种方法:1.递归: 2.利用栈. code(递归实现) #include <cstdio&g ...

  8. ACM学习历程——POJ3295 Tautology(搜索,二叉树)

    Description WFF 'N PROOF is a logic game played with dice. Each die has six faces representing some ...

  9. POJ3295 Tautology 解题报告

    直接上分析: 首先 弄清各种大写字母的操作的实质 K 明显 是 and   & A 是 or      | N 是 not   ! C  由表格注意到 当 w<=x 时 值为1 E  当 ...

随机推荐

  1. 基于MyBatis的数据库切分框架,可实现数据的水平切分和垂直切分。 http://www.makersoft.org

    https://github.com/makersoft/mybatis-shards MyBatis-Shards 专业的MyBatis数据库切分框架 MyBatis Shards简介 MyBati ...

  2. Java 删除当前文件夹及其文件夹下的全部文件

    删除文件夹2以下的全部文件及其文件夹 演示样例文件夹例如以下:D:/test/1/2 1.使用FileUtils类.静默删除 String url = "D:/test/1/2"; ...

  3. OSX10.11 CocoaPods 升级总结

    本文不会讨论CocoaPods的各种使用技巧以及各种原理,只是简单记录一下在升级过程中遇到的问题,如果使用中有各种问题来欢迎交流. Podfile.loc 文件变化 前几天一个小伙更新了CocoaPo ...

  4. POJ 1039 Pipe 枚举线段相交

    Pipe Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9493   Accepted: 2877 Description ...

  5. H.264视频在android手机端的解码与播放(转)

    随着无线网络和智能手机的发展,智能手机与人们日常生活联系越来越紧密,娱乐.商务应用.金融应用.交通出行各种功能的软件大批涌现,使得人们的生活丰富多彩.快捷便利,也让它成为人们生活中不可取代的一部分.其 ...

  6. C#学习第三天

    经过这几天的学习,真的有点觉得以前C学的太不好现在学C#也不顺畅,虽然很多东西都似曾相识,但是就是还得看好几遍才能记得住,而且现在都是简单的东西,还没有看到重载等稍微难点的地方.应该好好努力了,昨天忙 ...

  7. Sublime Text3使用详解

    Sublime Text简介 Sublime Text - 性感的代码编辑器.程序员之必备神器 Sublime Text 是一个代码编辑器,也是HTML和散文先进的文本编辑器.Sublime Text ...

  8. gulp初涉

    1.什么是gulp? gulp是前端开发过程中一种基于流的代码构建工具,是自动化项目的构建利器:它不仅能对网站资源进行优化,而且在开发过程中很多重复的任务能够使用正确的工具自动完成:使用它,不仅可以很 ...

  9. MySQL 插入数据

    MySQL 插入数据 MySQL 表中使用 INSERT INTO SQL语句来插入数据. 你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据. 语法 以下 ...

  10. SVN 不能提交, 看不到日志, 出现乱码. 解决方案.

    需要工具 sprite3: 点这里下载. 解决问题 如本文标题所写. 我遇到过几次一样的问题, 每次都很蛋疼的把目录重新检出, 浪费时间, 又伤了脾气. 下面是我在百度经验找到的一片帖子, 效果杠杠的 ...