poj 3295 Tautology (构造)
2013-07-30 15:36
288 查看
题目: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,只需要从后往前判断即可。
这题好长时间没看懂,代码也是看网上大神的
题意: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,只需要从后往前判断即可。
这题好长时间没看懂,代码也是看网上大神的
#include<iostream> #include<cstring> #include<cstdio> #include<cstdlib> #include<algorithm> using namespace std; char str[110]; int stack[110]; int check() { int pp,qq,rr,ss,tt,n,i,top; n=strlen(str); for(pp = 0; pp < 2; pp++) for(qq = 0; qq < 2; qq++) for(rr = 0; rr < 2; rr++) for(ss = 0; ss < 2; ss++) for(tt = 0; tt < 2; tt++) { top = 0; for(i = n-1; i >= 0; i--) { if(str[i]=='q') stack[top++]=qq; if(str[i]=='p') stack[top++]=pp; if(str[i]=='r') stack[top++]=rr; if(str[i]=='t') stack[top++]=tt; if(str[i]=='s') stack[top++]=ss; if(str[i]=='K') top--,stack[top-1]=(stack[top-1]&&stack[top]); if(str[i]=='A') top--,stack[top-1]=(stack[top-1]||stack[top]); if(str[i]=='N') stack[top-1]=!stack[top-1]; if(str[i]=='C') top--,stack[top-1]=((!stack[top-1])||stack[top]); if(str[i]=='E') top--,stack[top-1]=((stack[top-1])==stack[top]); } if(top!=1||stack[top-1]!=1) return 0; } return 1; }; int main() { while(gets(str)&&str[0]!='0') { if(check()) cout<<"tautology"<<endl; else cout<<"not"<<endl; } return 0; }
相关文章推荐
- [ACM] POJ 3295 Tautology (构造)
- POJ 3295 Tautology (构造题)
- 构造 + 离散数学、重言式 - POJ 3295 Tautology
- POJ 3295 Tautology(递归、构造)
- poj_3295 Tautology(构造+枚举)
- POJ 3295 Tautology 构造方法
- POJ 3295 Tautology(枚举 + 构造)
- POJ - 3295 - Tautology (构造)
- [ACM] POJ 3295 Tautology (构造)
- POJ 3295 Tautology 构造 难度:1
- POJ 3295 Tautology(构造)(栈)
- POJ 3295 ——Tautology 枚举 构造 位运算可优化
- POJ 3295 Tautology 构造 stack
- POJ 3295 Tautology 构造数列及STL中栈的运用
- poj-3295 Tautology
- POJ3295——Tautology
- POJ 3295 Tautology解题报告
- POJ 3295 Tautology(模拟)
- POJ 3295:Tautology
- POJ 3295 Tautology(构造法)