POJ 3295
2011-11-07 17:00
246 查看
看完这个题目后,果断没思路了,看了一下discuss,百度了一下,知道了什么是后缀式,前缀式,然后用后缀式+stack+位枚举水过了。
换成C++提交
0ms亲~~
POJ 3295
换成C++提交
MDK | 3295 | Accepted | 172K | 0MS | C++ | 2636B | 2011-11-07 16:59:54 |
POJ 3295
MDK | 3295 | Accepted | 704K | 16MS | G++ | 2636B | 2011-11-07 16:55:58 |
stack<bool> st; char ss[MAXN]; int len = 0; bool p, q, r, s, t; bool get_bit(int t,int x) { // 在 t 中,取出第 x 位 --从零开始 return t & (1<<(x)); } bool Ant() { bool tmp,tmpp; while(len!=-1) switch(ss[len--]) { case 'p': st.push(p); break; case 'q': st.push(q); break; case 'r': st.push(r); break; case 's': st.push(s); break; case 't': st.push(t); break; case 'N': tmp = st.top();st.pop(); st.push(!tmp); break; case 'A': tmp = st.top();st.pop();tmpp = st.top();st.pop(); st.push(tmp || tmpp); break; case 'K': tmp = st.top();st.pop();tmpp = st.top();st.pop(); st.push(tmp && tmpp); break; case 'C': tmp = st.top();st.pop();tmpp = st.top();st.pop(); st.push(!tmp | tmpp); break; case 'E': tmp = st.top();st.pop();tmpp = st.top();st.pop(); st.push(tmp == tmpp); break; } return st.top(); } int main () { FOPEN while(~SCFS(ss)) { if(ss[0] == '0') { break; } int lent = strlen(ss); int sum = 64; bool mark = 0; for(int i = 0;i<sum;i++) { len=lent - 1;SETQ(st); p = get_bit(i,0); q = get_bit(i,1); r = get_bit(i,2); s = get_bit(i,3); t = get_bit(i,4); int ans = Ant(); if( ans == 0) { mark = 1; break; } } if(mark) { puts("not"); } else { puts("tautology"); } } }
相关文章推荐
- POJ 3295 *** Tautology
- POJ-3295-Tautology
- POJ 3295 Tautology(构造)(栈)
- poj 3295 Tautology
- [ACM] POJ 3295 Tautology (构造)
- POJ 3295 Tautology解题报告
- POJ3295--Tautology(模拟)
- poj 3295 Tautology
- POJ 3295 Tautology(模拟)
- poj 3295
- poj 3295 Tautology
- POJ 3295
- POJ 3295 -Tautology
- POJ 3295 Tautology(构造法)
- poj-3295-Tautology
- poj 3295 Tautology【构造法】【刷题计划】
- POJ-3295-Tautology-2013-12-04 20:44:18
- POJ3295 Tautology(栈和枚举的应用)
- poj 3295 Tautology(构造法)
- POJ 3295:Tautology