poj 3295 Tautology(栈)
题目链接:http://poj.org/problem?id=3295
思路分析:判断逻辑表达式是否为永真式问题。根据该表达式的特点,逻辑词在逻辑变量前,类似于后缀表达式求值问题。
算法中使用两个栈,从表达式的后边开始处理表达式中每个字符;若为逻辑变量,使其入栈SR,否则从栈SR中弹出两个逻辑变量,
进行运算后的结果再入栈SR;直到处理完表达式所有的字符。(PS:使用栈可以很好的处理广义表类似的序列)
代码如下:
#include <iostream>
#include <stack>
using namespace std; const int MAX_N = + ;
char A[MAX_N]; int p, q, r, s, t, ans; int Match(char x)
{
int value = ; switch(x)
{
case '':value = ; break;
case '':value = ; break;
case 'p':value = p; break;
case 'q':value = q; break;
case 'r':value = r; break;
case 's':value = s; break;
case 't':value = t; break;
default: value = p;
}
return value;
} int Calc(char a, char b, char T)
{
int x, y, ans; x = Match(a);
y = Match(b);
switch(T)
{
case 'K':ans = x && y; break;
case 'A':ans = x||y; break;
case 'N':ans = !x; break;
case 'C':ans = (!x)||y; break;
case 'E':ans = (x == y);break;
}
return ans;
} int WWF( )
{
int Rusult = ;
int Len = strlen(A);
stack<char>SL, SR; for (p = ; p <= ; ++ p)
for(q = ; q <= ; ++ q)
for(r = ; r <= ; ++ r)
for(s = ; s <=; ++ s)
for(t = ; t <= ; ++ t){ for (int i = ; i < Len; ++ i)
SL.push(A[i]); while (!SL.empty())
{
char x, y, T;
int flag = ; T = SL.top();SL.pop();
switch(T)
{
case 'p':
case 'q':
case 'r':
case 's':
case 't': SR.push(T);flag = ;break;
} if (flag == )
continue;
else
if (T == 'N')
{
x = SR.top();SR.pop();
ans = Calc(x, x, T);
}
else
{
x = SR.top();SR.pop();
y = SR.top();SR.pop();
ans = Calc(x, y, T);
}
SR.push(ans + '');
}
if (ans == )
return ;
}
return ;
} int main()
{
int flag = ; while (scanf( "%s", A ) != EOF)
{
if (A[] == '')
break;
flag = WWF();
if ( flag == )
printf( "not\n" );
else
printf( "tautology\n" );
}
return ;
}
poj 3295 Tautology(栈)的更多相关文章
- poj 3295 Tautology 伪递归
题目链接: http://poj.org/problem?id=3295 题目描述: 给一个字符串,字符串所表示的表达式中p, q, r, s, t表示变量,取值可以为1或0.K, A, N, C, ...
- POJ 3295 Tautology(构造法)
题目网址:http://poj.org/problem?id=3295 题目: Tautology Time Limit: 1000MS Memory Limit: 65536K Total Su ...
- 构造 + 离散数学、重言式 - POJ 3295 Tautology
Tautology Description WFF 'N PROOF is a logic game played with dice. Each die has six faces represen ...
- poj 3295 Tautology (构造)
题目:http://poj.org/problem?id=3295 题意:p,q,r,s,t,是五个二进制数. K,A,N,C,E,是五个运算符. K:&& A:||N:! C:(!w ...
- POJ 3295 Tautology(构造法)
http://poj.org/problem?id=3295 题意: 判断表达式是否为永真式. 思路: 把每种情况都枚举一下. #include<iostream> #include< ...
- poj 3295 Tautology
点击打开链接 Tautology Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8127 Accepted: 3115 ...
- POJ 3295 Tautology (构造题)
字母:K, A, N, C, E 表示逻辑运算 字母:p, q, r, s, t 表示逻辑变量 0 或 1 给一个字符串代表逻辑表达式,如果是永真式输出tautology 否则输出not 枚举每个逻辑 ...
- POJ 3295 Tautology (构造法)
Tautology Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7716 Accepted: 2935 Descrip ...
- [ACM] POJ 3295 Tautology (构造)
Tautology Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9302 Accepted: 3549 Descrip ...
随机推荐
- cocos2d-x 3.1 集成 云风pbc
cocos2d-x 3.x版本号变动比較大,从改用cmake管理整个项目,到使用python集成一体化的项目工具. 这些都是我喜欢的.我能够非常easy的在我的ubuntu上面搭建好开发环境,并且根本 ...
- PowerDesigner 基础使用
建表使用基础 1.打开软件,点击create model(如下图一)or 右上角 文件→建立新模型 or 快捷键 Ctrl+N(如下图二) 2.选择要生成脚本的数据库类型(见上图二) 3.建表(图三) ...
- offsetParent 到底是哪一个?
前言 温故而知新.遇到offsetParent这个知识点,发现书上讲的不够详细.于是看了看豪情的博客,发现讲得很具体,收藏一下. 正文 不同情况 没有已定位的父节点,且自身position:relat ...
- 使用Maven完成自动化打包并部署到Linux服务器下(Tomcat7)
最近在使用maven,顺便尝试了下tomcat部署.网上找到了很多资料但是都不是最新的,所以贴上比较新的Tomcat7部署代码和配置,方便以后回顾-->测试OK. 1. 首先是配置Tomcat ...
- 精简版LVCL,有空看看
http://tothpaul.free.fr/sources.php?lvcl.lvcl1 http://synopse.info/forum/viewtopic.php?id=665
- delphi 文件夹权限设置(执行一个小脚本的笨办法)
如题,研究了一天,也没再网上找到比较好的方式,自己做了一个.方法如下: 1.创建一个 cmd 命令文件.2.调用该命令. 代码如下: S:='echo y|cacls h: /t /c /g ev ...
- C#使用Windows API 隐藏/显示 任务栏 (FindWindowEx, ShowWindow)
原文 C#使用Windows API 隐藏/显示 任务栏 (FindWindowEx, ShowWindow) 今天,有网友询问,如何显示和隐藏任务栏? 我这里,发布一下使用Windows API 显 ...
- AttributeError: 'module' object has no attribute 'Thread'
$ python thread.py starting at: 2015-08-05 00:24:24Traceback (most recent call last): File "th ...
- HDU 1722 Cake
#include<cstdio> int gcd(int m, int n) { ?n:gcd(n % m, m); } int main() { int m, n; while(scan ...
- CF 191 div2
A.数据量很小,直接爆搞. #include <iostream> #include <cstdio> #include <algorithm> #include ...