一个循环是32次,列举pqrst所有的值的情况,如果32种情况得到的值相同则为正确的。
和计算器比较像,类似算式表达式的前缀式,用递归解
列举32种情况
for(i=0; i<32; ++i)
{
switch( str[pos] )
{
case 'p':return i&1;
case 'q':return i>>1&1;
case 'r':return i>>2&1;
case 's':return i>>3&1;
case 't':return i>>4&1;
}
}
开始时脑门夹到了,用
{
case 'p':return i&1;
case 'q':return i&2;
case 'r' :return i&4;
case 's':return i&8;
case 't':return i&16;
}
结果返回了1 2 4 8 16,不是1
#include <stdio.h>
#include <string.h>
char str[130];
int pos;
int judge(char * str,int i)
{
++pos;
switch( str[pos] )
{
case 'p':return i&1;
case 'q':return i>>1&1;
case 'r':return i>>2&1;
case 's':return i>>3&1;
case 't':return i>>4&1;
case 'K':return judge(str,i)&judge(str,i);
case 'A':return judge(str,i)|judge(str,i);
case 'N':return !judge(str,i);
case 'C':return !judge(str,i)|judge(str,i);
case 'E':return !(judge(str,i)^judge(str,i));
}
}
int main()
{
int i,len,flag;
// freopen("test","r",stdin);
while(scanf("%s",str),str[0]!='0')
{
flag = 1;
for(i=0; i<32; ++i)
{
pos = -1;
if( !judge(str,i) )
{
flag = 0;
break;
}
}
if(flag)printf("tautology\n");
else printf("not\n");
}
return 0;
}
分享到:
相关推荐
北大POJ3295-Tautology 解题报告+AC代码
递归实现 各种BOOL算 注意C++的判断机制
这是POJ上算法学习中推荐的50个题目,熟练编写这些程序,将会使算法水平大有调高
(poj1753,poj2965)(2)贪心(poj1328,poj2109,poj2586)(3)递归和分治法.(4)递推.(5)构造法.(poj3295)……中级有:(1)C++的标准模版库的应用. (poj3096,poj3007)(2)较为复杂的模拟题的训练(poj3393,poj1472,poj3371,...
POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类
poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题...
(5)构造法.(poj3295) (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996) 二.图算法: (1)图的深度优先遍历和广度优先遍历. (2)最短路径算法(dijkstra,bellman-ford,floyd,heap+dijkstra) (poj1860,poj...
POJ第1861题源码 POJ第1861题源码 POJ第1861题源码
poj分类poj分类poj分类poj分类
北大POJ1159-Palindrome 解题报告+AC代码
poj 3414解题报告poj 3414解题报告poj 3414解题报告poj 3414解题报告
poj 1012解题报告poj 1012解题报告poj 1012解题报告poj 1012解题报告
poj 2329解题报告poj 2329解题报告poj 2329解题报告poj 2329解题报告
poj 1659解题报告poj 1659解题报告poj 1659解题报告poj 1659解题报告
C语言 poj npu 西工大 C语言Poj答案全完整打包,给有需要的朋友
POJ1503解答 POJ1503解答,正确答案(已通过POJ)
POJ1083的代码,POJ1083的代码,POJ1083的代码
poj 百练 题目分类 poj 百练 题目分类
POJ1048,加强版的约瑟夫问题 难度中等
北大POJ2002-Squares 解题报告+AC代码