poj 3295 Tautology
来源:互联网 发布:淘宝单品流量怎么看 编辑:程序博客网 时间:2024/06/06 02:40
题意:
给出一个表达式,问这个表达式是否是永真式?是输出“tautology”,否则输出“not”。
其中p, q, r, s, t是变量,值为真或者假。
K, A, N, C, E分别为与、或、非、蕴含、判等操作
下面是真值表:w x Kwx Awx Nw Cwx Ewx 1 1 1 1 0 1 1 1 0 0 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 1 1 1分析:表达式最长不过100个字符,变量最多只有5个,枚举所有变量的状态,用栈模拟一下操作就行了。
#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int N = 100;void solve(char s[]) { static char var[26]; static bool v[26], stk[N]; int ls = strlen(s), index, cnt = 0, top = -1, tmp; memset(v, 0 , sizeof(v)); for(int i = 0; i < ls; i++) { if(islower(s[i])) { index = s[i] - 'a'; if(!v[index]) { var[cnt++] = s[i]; v[index] = 1; } } } for(int sta = 0; sta < (1 << cnt); sta++) { tmp = sta; for(int i = 0; i < cnt; i++) { index = var[i] - 'a'; v[index] = tmp & 1; tmp >>= 1; } for(int i = ls - 1; i >= 0; i--) { if(islower(s[i])) { index = s[i] - 'a'; stk[++top] = v[index]; } else { tmp = top; switch(s[i]) { case 'K': stk[--top] &= stk[tmp]; break; case 'A': stk[--top] |= stk[tmp]; break; case 'N': stk[top] = !stk[top]; break; case 'C': if(stk[top] == false) { stk[--top] = true; } else { stk[--top] &= stk[tmp]; } break; default: stk[--top] = stk[tmp] == stk[tmp - 1] ? true : false; } } } if(!stk[top--]) { puts("not"); return; } } puts("tautology");}int main() { //freopen("in.txt", "r", stdin); char s[N]; while(scanf("%s", s) && s[0] != '0') { solve(s); } return 0;}
0 0
- POJ 3295 Tautology 模拟
- POJ-3295-Tautology
- POJ 3295 Tautology
- POJ 3295 Tautology
- POJ 3295 Tautology
- POJ 3295 Tautology(模拟)
- poj 3295 Tautology
- POJ 3295 Tautology
- POJ 3295 Tautology
- poj 3295 Tautology
- poj-3295 Tautology
- POJ 3295 -Tautology
- POJ 3295 Tautology
- POJ:题号 3295------tautology
- Poj 3295 Tautology
- Tautology POJ 3295
- POJ 3295 Tautology
- poj 3295 Tautology
- maven项目环境配置与搭建
- 纯虚函数和虚函数的区别
- 配置本地php环境,80端口被system占用怎么办?百度大部分都不行,最后才解决。。
- 从问题单处理了解Toast系统窗口显示、Activity窗口创建、WindowManagerService对系统窗口组织排布(二)
- C++实现并查集
- poj 3295 Tautology
- Greenplum优化--SQL调优篇
- 欢迎使用CSDN-markdown编辑器
- Data Structure:Binary Tree
- 图像处理之霍夫变换(直线检测算法)
- Element getXML()
- android ORM框架ORMLite封装
- 功率谱密度(功率信号)、能量谱密度(能量信号)详解
- MySql 申明变量以及赋值