POJ 3295

Posted huluxin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ 3295相关的知识,希望对你有一定的参考价值。

  1 #include <iostream>
  2 #include <cstdio>
  3 #include <cmath>
  4 #include <cstring>
  5 #include <algorithm>
  6 #include <queue>
  7 #include <stack>
  8 #include <vector>
  9 using namespace std;
 10 stack<int>z;
 11 int p,q,r,s,t,len,flag;
 12 char a[250];
 13 int fun()
 14 {
 15     for(int i=len-1;i>=0;i--)
 16     {
 17         if(a[i]==p)
 18             z.push(p);
 19         else if(a[i]==q)
 20             z.push(q);
 21         else if(a[i]==r)
 22             z.push(r);
 23         else if(a[i]==s)
 24             z.push(s);
 25         else if(a[i]==t)
 26             z.push(t);
 27         else if(a[i]==A)
 28         {
 29             int k1=z.top();
 30             z.pop();
 31             int k2=z.top();
 32             z.pop();
 33             int k3=k1||k2;
 34             z.push(k3);
 35         }
 36         else if(a[i]==K)
 37         {
 38             int k1=z.top();
 39             z.pop();
 40             int k2=z.top();
 41             z.pop();
 42             int k3=k1&&k2;
 43             z.push(k3);
 44         }
 45         else if(a[i]==N)
 46         {
 47             int k1=z.top();
 48             z.pop();
 49             int k3=!k1;
 50             z.push(k3);
 51         }
 52         else if(a[i]==C)
 53         {
 54             int k1=z.top();
 55             z.pop();
 56             int k2=z.top();
 57             z.pop();
 58             int k3=(!k1)||k2;
 59             z.push(k3);
 60         }
 61         else if(a[i]==E)
 62         {
 63             int k1=z.top();
 64             z.pop();
 65             int k2=z.top();
 66             z.pop();
 67             if(k1==k2)
 68             z.push(1);
 69             else
 70             z.push(0);
 71         }
 72     }
 73     if(z.top()==0)
 74     return 1;
 75     return 0;
 76 }
 77 int check()
 78 {
 79         for(p=0;p<2;p++)
 80         {
 81             for(q=0;q<2;q++)
 82             {
 83                 for(r=0;r<2;r++)
 84                 {
 85                     for(s=0;s<2;s++)
 86                     {
 87                         for(t=0;t<2;t++)
 88                         {
 89                             if(fun())
 90                             {
 91                                 flag=1;
 92                                 printf("not
");
 93                                 return 0;
 94                             }
 95                         }
 96                     }
 97                 }        
 98             }
 99         }
100         return 1;
101 }
102 int main(int argc, char *argv[])
103 {
104     
105     while(gets(a))
106     {
107         if(a[0]==0)
108         break;
109         len=strlen(a);
110         flag=0;
111         check();
112         if(!flag)
113          printf("tautology
");
114     }
115     return 0;
116 }

 

以上是关于POJ 3295的主要内容,如果未能解决你的问题,请参考以下文章

POJ 3295

[POJ3295]Tautology

Poj 3295

POJ-3295 Tautology---栈+表达式求值

POJ - 3295 - Tautology = 枚举 + 二叉树遍历

Poj3295 tautology