POJ 3295 Tautology
2012-11-26 20:49
363 查看
Tautology
Description
WFF 'N PROOF is a logic game played with dice. Each die has six faces representing some subset of the possible symbols K, A, N, C, E, p, q, r, s, t. A Well-formed formula (WFF) is any string of these symbols obeying the following rules:
p, q, r, s, and t are WFFs
if w is a WFF, Nw is a WFF
if w and x are WFFs, Kwx, Awx, Cwx, and Ewx are WFFs.
The meaning of a WFF is defined as follows:
p, q, r, s, and t are logical variables that may take on the value 0 (false) or 1 (true).
K, A, N, C, E mean and, or, not, implies, and equals as defined in the truth table below.
A tautology is a WFF that has value 1 (true) regardless of the values of its variables. For example,ApNp is a tautology because it is true regardless of the value of
p. On the other hand,ApNq is not, because it has the value 0 for
p=0, q=1.
You must determine whether or not a WFF is a tautology.
Input
Input consists of several test cases. Each test case is a single line containing a WFF with no more than 100 symbols. A line containing 0 follows the last case.
Output
For each test case, output a line containing tautology or not as appropriate.
Sample Input
Sample Output
Source
Waterloo Local Contest, 2006.9.30
这题我是用的dfs枚举的所有可能取值
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 6693 | Accepted: 2558 |
WFF 'N PROOF is a logic game played with dice. Each die has six faces representing some subset of the possible symbols K, A, N, C, E, p, q, r, s, t. A Well-formed formula (WFF) is any string of these symbols obeying the following rules:
p, q, r, s, and t are WFFs
if w is a WFF, Nw is a WFF
if w and x are WFFs, Kwx, Awx, Cwx, and Ewx are WFFs.
The meaning of a WFF is defined as follows:
p, q, r, s, and t are logical variables that may take on the value 0 (false) or 1 (true).
K, A, N, C, E mean and, or, not, implies, and equals as defined in the truth table below.
Definitions of K, A, N, C, and E |
w x | Kwx | Awx | Nw | Cwx | Ewx |
1 1 | 1 | 1 | 0 | 1 | 1 |
1 0 | 0 | 1 | 0 | 0 | 0 |
0 1 | 0 | 1 | 1 | 1 | 0 |
0 0 | 0 | 0 | 1 | 1 | 1 |
p. On the other hand,ApNq is not, because it has the value 0 for
p=0, q=1.
You must determine whether or not a WFF is a tautology.
Input
Input consists of several test cases. Each test case is a single line containing a WFF with no more than 100 symbols. A line containing 0 follows the last case.
Output
For each test case, output a line containing tautology or not as appropriate.
Sample Input
ApNp ApNq 0
Sample Output
tautology not
Source
Waterloo Local Contest, 2006.9.30
这题我是用的dfs枚举的所有可能取值
#include <iostream> #include <string> #include <math.h> using namespace std; string s1,s2; int a[10],k1,top; char s3[1000]; int main() { void dfs(int k); int i,j,n,m,s,t; while(cin>>s1) { if(s1=="0") { break; } k1=0; dfs(1); if(k1==0) { cout<<"tautology"<<endl; }else { cout<<"not"<<endl; } } return 0; } void dfs(int k) { int i,j,x,y; char c; for(i=0;i<=1;i++) { a[k]=i; if(k<=4) { dfs(k+1); }else { s2=s1; for(j=0;j<=s1.size()-1;j++) { if(s1[j]>='A'&&s1[j]<='Z') { ; }else { x=s1[j]-'p'+1; if(a[x]==0) { c='0'; }else { c='1'; } s1[j]=c; } } while(s1.size()>1) { top=0; for(j=0;j<=s1.size()-1;) { if(s1[j]>='A'&&s1[j]<='Z'&&s1[j]!='N'&&(s1[j+1]=='0'||s1[j+1]=='1')&&(s1[j+2]=='0'||s1[j+2]=='1')) { if(s1[j]=='K') { if(s1[j+1]=='1'&&s1[j+2]=='1') { s3[top++]='1'; }else { s3[top++]='0'; } }else if(s1[j]=='A') { if(s1[j+1]=='1'||s1[j+2]=='1') { s3[top++]='1'; }else { s3[top++]='0'; } }else if(s1[j]=='C') { if((s1[j+1]=='1'&&s1[j+2]=='1')||(s1[j+1]=='0'&&s1[j+2]=='1')||(s1[j+1]=='0'&&s1[j+2]=='0')) { s3[top++]='1'; }else { s3[top++]='0'; } }else if(s1[j]=='E') { if((s1[j+1]=='1'&&s1[j+2]=='1')||(s1[j+1]=='0'&&s1[j+2]=='0')) { s3[top++]='1'; }else { s3[top++]='0'; } } j+=3; }else if(s1[j]=='N'&&(s1[j+1]=='0'||s1[j+1]=='1')) { if(s1[j+1]=='0') { s3[top++]='1'; }else { s3[top++]='0'; } j+=2; }else { s3[top++]=s1[j]; j++; } } s3[top]='\0'; s1=s3; } if(s1[0]=='0') { k1=1; return ; } s1=s2; } } }
相关文章推荐
- 构造 + 离散数学、重言式 - POJ 3295 Tautology
- POJ 3295, Tautology
- poj 3295 Tautology
- POJ 3295 Tautology
- poj 3295 Tautology
- POJ3295 Tautology (模拟)
- POJ 3295 Tautology(构造法 stack)
- poj 3295 Tautology [ 栈 ]
- POJ3295——Tautology
- poj3295——Tautology(构造法)
- poj 3295 Tautology
- poj 3295 Tautology
- Tautology(POJ--3295
- POJ - 3295 - Tautology (构造)
- Tautology(POJ_3295)
- POJ-3295 Tautology 枚举+DFS
- Tautology(POJ 3295编译原理)
- POJ训练计划3295_Tautology(构造/类栈处理)
- POJ 3295 ——Tautology 枚举 构造 位运算可优化
- poj 3295 Tautology