首页 > 代码库 > poj3295 Tautology , 计算表达式的值
poj3295 Tautology , 计算表达式的值
给你一个表达式,其包括一些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 , 计算表达式的值
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。