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 ...
随机推荐
- UIView 中bounds和frame的差别
搞iOS开发的童鞋基本都会用过UIView,那他的bounds和frame两个属性也不会陌生,那这两个有什么实质性的区别呢? 先看到下面的代码你肯定就明白了一些: -(CGRect)frame{ ...
- OC KVC总结
在iOS开发中,我们一般使用set方法或者点语法来修改对象的属性值,比如说 stu.age = 9 与 [stu setAge:9]. KVC(key value coding)键值编码,这是一种间接 ...
- ##DAY2 UILabel、UITextField、UIButton、UIImageView、UISlider
##DAY2 UILabel.UITextField.UIButton.UIImageView.UISlider #pragma mark ———————UILabel——————————— UILa ...
- C#连接Oracle数据库基本类
C#用来连接oracle数据库的基本类: using System; using System.Collections.Generic; using System.Linq; using System ...
- Maven+SpringMVC+MyBatis 上传图片
上传文件我一直都觉得很难,好吧,所有涉及文件操作的我都觉得不容易.然后今天尝试了从网页上传图片保存到服务器.这个例子的前提是搭建好了服务器端框架:Maven+Spring MVC+MyBatis.当然 ...
- c#计算文件的MD5值
代码: /// <summary> /// 计算文件的 MD5 值 /// </summary> /// <param name="fileName" ...
- Jps介绍以及解决jps无法查看某个已经启动的java进程问题【盗用】
1.jps的作用 jps类似linux的ps命令,不同的是ps是用来显示进程,而jps只显示java进程,准确的说是当前用户已启动的部分java进程信息,信息包括进程号和简短的进程command. 2 ...
- Python 爬取CSDN博客频道
初次接触python,写的很简单,开发工具PyCharm,python 3.4很方便 python 部分模块安装时需要其他的附属模块之类的,可以先 pip install wheel 然后可以直接下载 ...
- (IOS)关于Xcode的架构(Architectures)设置
首先来了解一下Architectures中几个参数的含义 ARMv6:ARM11内核用于iPhone2G和iPhone3G中的架构 ARMv7:modern ARM内核用于iPhone3GS和iPho ...
- MacOS下使用VMware5 破解 安装win7 ISO 激活
VMware5 下载 破解 以及win7 ISO版本的安装 激活VMware5 下载与破解参考方法http://www.macx.cn/thread-2060440-1-1.htmlVMware5 是 ...