Tautology(POJ 3295编译原理)
~题目链接~
http://poj.org/problem?id=3295
输入
ApNp ApNq 0
结果
tautology not
1.要把p,q,r,s,t的所有取值都搜索一遍
2.'K' a&b; 'A' a||b; 'N' !a; 'C' !a||b;'E' a==b;
3.如果为永真式,输出tautology;否则 not
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #include<stdio.h> #include<string.h> #include<stdlib.h> int n,flag,p,q,r,s,t; char str[100]; int reach() { n++; switch (str[n]) { case 'K' : return reach()&reach(); case 'A' : return reach()|reach(); case 'N' : return !reach(); case 'C' : return !reach()|reach(); case 'E' : return reach()==reach(); case 'p' : return p; case 'q' : return q; case 'r' : return r; case 's' : return s; case 't' : return t; } } int main() { while (~scanf( "%s" ,str) && str[0]!= '0' ) { flag=0; //32中取值情况 for (p=0; p<2; p++) for (q=0; q<2; q++) for (r=0; r<2; r++) for (s=0; s<2; s++) for (t=0; t<2; t++) { n=-1; if (!reach()) flag=1; } if (flag) printf( "not\n" ); else printf( "tautology\n" ); } return 0; } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步