题目: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,只需要从后往前判断即可。

这题好长时间没看懂,代码也是看网上大神的

 #include<iostream>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
char str[];
int stack[]; int check()
{
int pp,qq,rr,ss,tt,n,i,top;
n=strlen(str);
for(pp = ; pp < ; pp++)
for(qq = ; qq < ; qq++)
for(rr = ; rr < ; rr++)
for(ss = ; ss < ; ss++)
for(tt = ; tt < ; tt++)
{
top = ;
for(i = n-; i >= ; 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-]=(stack[top-]&&stack[top]);
if(str[i]=='A') top--,stack[top-]=(stack[top-]||stack[top]);
if(str[i]=='N') stack[top-]=!stack[top-];
if(str[i]=='C') top--,stack[top-]=((!stack[top-])||stack[top]);
if(str[i]=='E') top--,stack[top-]=((stack[top-])==stack[top]);
}
if(top!=||stack[top-]!=)
return ;
} return ;
}; int main()
{
while(gets(str)&&str[]!='')
{
if(check())
cout<<"tautology"<<endl;
else
cout<<"not"<<endl;
}
return ;
}

poj 3295 Tautology (构造)的更多相关文章

  1. POJ 3295 Tautology(构造法)

    题目网址:http://poj.org/problem?id=3295 题目: Tautology Time Limit: 1000MS   Memory Limit: 65536K Total Su ...

  2. POJ 3295 Tautology 构造 难度:1

    Tautology Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9580   Accepted: 3640 Descrip ...

  3. [ACM] POJ 3295 Tautology (构造)

    Tautology Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9302   Accepted: 3549 Descrip ...

  4. 构造 + 离散数学、重言式 - POJ 3295 Tautology

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

  5. POJ 3295 Tautology(构造法)

    http://poj.org/problem?id=3295 题意: 判断表达式是否为永真式. 思路: 把每种情况都枚举一下. #include<iostream> #include< ...

  6. POJ 3295 Tautology (构造题)

    字母:K, A, N, C, E 表示逻辑运算 字母:p, q, r, s, t 表示逻辑变量 0 或 1 给一个字符串代表逻辑表达式,如果是永真式输出tautology 否则输出not 枚举每个逻辑 ...

  7. POJ 3295 Tautology (构造法)

    Tautology Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7716   Accepted: 2935 Descrip ...

  8. poj 3295 Tautology(栈)

    题目链接:http://poj.org/problem?id=3295 思路分析:判断逻辑表达式是否为永真式问题.根据该表达式的特点,逻辑词在逻辑变量前,类似于后缀表达式求值问题. 算法中使用两个栈, ...

  9. poj 3295 Tautology 伪递归

    题目链接: http://poj.org/problem?id=3295 题目描述: 给一个字符串,字符串所表示的表达式中p, q, r, s, t表示变量,取值可以为1或0.K, A, N, C, ...

随机推荐

  1. FireFox不支持InnerText的解决方法

    innerText和InnerHTML是非常实用的一个属性,然而在FireFox中不支持此属性,可能是因为考虑到网页的安全性.这样一来为开发者带来了不少麻烦.FireFox中也提供了另外一个属性inn ...

  2. CentOS安装libpcap

    1.安装GCC:  yum -y install gcc-c++ 2.安装flex:   yum -y install flex   没有flex,直接安装libpcap会提示"Your o ...

  3. git命令行

    cmd下运行或者 进入git bash运行 输入 exit退出切换到仓库目录后再git statusgit commit -m 注释 git pull origin1 mastergit push o ...

  4. 深入理解jsavascript的作用域

    一. JavaScript声明提前 在JavaScript中如果不创建变量,直接去使用,则报错: console.log(xxoo); // 报错:Uncaught ReferenceError: x ...

  5. 虚拟机安装Centos6.5之后的网络配置

    我使用的是minimal模式安装的,默认是无法联网的,需要自己配置,下面我列举2种联网的配置方法 方法1: 默认使用的是NAT模式,修改/etc/sysconfig/network-scripts/i ...

  6. hdu 4641 K-string SAM的O(n^2)算法 以及 SAM+并查集优化

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=4641 题意:有一个长度为n(n < 5e4)的字符串,Q(Q<=2e5)次操作:操作分为:在末 ...

  7. frame 之间访问

    index.asp代码 <frameset rows="50,*,20" cols="*" frameborder="no" bord ...

  8. WebApi中帮助页Description的中文显示

    转自:http://edi.wang/post/2013/10/28/auto-generate-help-document-aspnet-webapi 我选择Web API的一个重要原因就是因为可以 ...

  9. Integer自动装箱分析

    先看看下面的代码会输出什么: public static void main(String[] args) { Integer i = 127; Integer j = 128; Integer ii ...

  10. C++ 字符串各种处理

    要想使用标准C++中string类,必须要包含 #include <string>// 注意是<string>,不是<string.h>,带.h的是C语言中的头文件 ...