码迷,mamicode.com
首页 > 其他好文 > 详细

poj3295 Tautology , 计算表达式的值

时间:2014-07-08 14:02:35      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:blog   os   2014   for   io   算法   

给你一个表达式,其包含一些0,1变量和一些逻辑运算法,让你判断其是否为永真式。


计算表达式的常用两种方法:1、递归; 2、利用栈。


code(递归实现)

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <string>
using namespace std;
char str[2000];
int pos;
bool calc(int bit)
{
    pos++;
    switch(str[pos])
    {
        case 'p': return (bit)&1;
        case 'q': return (bit>>1)&1;
        case 'r': return (bit>>2)&1;
        case 's': return (bit>>3)&1;
        case 't': return (bit>>4)&1;
        case 'K': return calc(bit) &calc(bit);
        case 'A': return calc(bit) | calc(bit);
        case 'N': return !calc(bit);
        case 'C': return (!calc(bit)) | calc(bit);
        case 'E': return calc(bit) == calc(bit);
        default:;
    }
}
int main()
{
    int bit;
    bool mark;
    while(~scanf("%s", str) && str[0]!='0')
    {
        mark = true;
        for(bit=0; bit<32; ++bit)
        {
            pos = -1;
            if( !calc(bit) )
            {
                mark = false;
                break;
            }
        }
        if(mark) printf("tautology");
        else printf("not");
    }
    return 0;
}



poj3295 Tautology , 计算表达式的值,布布扣,bubuko.com

poj3295 Tautology , 计算表达式的值

标签:blog   os   2014   for   io   算法   

原文地址:http://blog.csdn.net/yew1eb/article/details/37334601

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!