一个循环是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;
}
分享到:
相关推荐
### POJ经典例题知识点解析 #### 一、概述 POJ(Peking University Judge Online)是中国北京大学设立的一个在线评测系统,旨在为编程爱好者提供一个练习算法与数据结构的平台。POJ上提供了大量的编程题目,覆盖了...
* 构造法:构造法是指通过构造一个数据结构来解决问题的方法,如 poj3295。 * 模拟法:模拟法是指通过模拟问题的过程来解决问题的方法,如 poj1068、poj2632、poj1573、poj2993、poj2996。 二、图算法 图算法是...
* 构造法:通过构造解来解决问题,例如 poj3295。 * 模拟法:通过模拟问题的过程来解决问题,例如 poj1068、poj2632、poj1573、poj2993、poj2996。 2. 图算法: * 图的深度优先遍历和广度优先遍历:例如 poj1860...
这种策略在poj3295这类构造法题目中尤为适用,同时也常见于递归和动态规划中。 #### 模拟法 模拟法是对题目场景的直接模拟,适用于逻辑清晰、规则明确的问题,如poj1068和poj2632。虽然这种方法直观易懂,但在...
- **构造法**:直接构造出满足条件的解,如poj3295。 - **模拟法**:按照题目描述的逻辑进行编程模拟,如poj1068、poj2632等。 2. **图算法**: - **深度优先遍历和广度优先遍历**:是图的基本操作,用于搜索图...
通过建立一个二维数组来表示问题的约束,然后使用回溯法逐步构造解。 4. poj1201 "Sieve"(筛法) 题目要求计算一定范围内的素数。这可以通过埃拉托斯特尼筛法(Sieve of Eratosthenes)高效地解决,先将所有数字...
哈希函数的设计需要考虑到哈希冲突的解决策略,如链地址法或开放寻址法。 3. **查找算法**:在哈希表或其他数据结构中查找特定单词,可能需要用到线性查找、二分查找或哈希查找。对于大量数据,高效查找算法是必不...
数论中GCD(最大公约数)和LCM(最小公倍数)的计算,以及多项式的乘法和除法,都是经常遇到的问题。例如,题目poj3101就涉及到GCD的计算。 ### 6. 字符串算法 字符串算法处理字符串的匹配、分割、排序等问题,...
- **定义**:构造法是通过构造一个符合题目要求的模型来解决问题。 - **示例题目**: - poj3295 - poj1831 - poj3239 - **应用场景**:适用于需要构造特定模型或结构的问题。 **6. 模拟法** - **定义**:模拟法...
4. **优化**:为了节省空间,可以考虑使用链式前缀法,即只有当一个节点有多个子节点时才分配一个节点,否则将子节点直接存储在父节点的数组中。 5. **Java实现**:使用类和对象来表示字典树的节点,创建相应的插入...
* 构造法:POJ3295、POJ3259、POJ1062、POJ2253、POJ1125、POJ2240 * 最小生成树算法:prim、kruskal、POJ1789、POJ2485、POJ1258、POJ3026 * 拓扑排序:POJ1094 * 串算法:POJ1035、POJ3080、POJ1936 * 哈希表和二...
* 构造法:poj3295 * 模拟法:poj1068, poj2632, poj1573, poj2993, poj2996 二、图算法 * 图的深度优先遍历和广度优先遍历 * 最短路径算法:dijkstra, bellman-ford, floyd, heap+dijkstra + poj1860, poj3259, ...
5. **构造法**:直接构造出满足条件的解,如POJ3295。 6. **模拟法**:按照题目描述的逻辑进行模拟操作,如POJ1068、2632、1573、2993和2996。 ### 图算法 1. **深度优先遍历(DFS)** 和 **广度优先遍历(BFS)**...
- 构造法:直接构建解决方案,如POJ3295。 - 模拟法:按照实际过程进行操作,如POJ1068和POJ2632。 2. **图算法** - 深度优先遍历和广度优先遍历:遍历图中的所有节点,如POJ1062。 - 最短路径算法:包括...
5. 构造法:直接构造问题的解决方案,如poj3295中的问题。 6. 模拟法:通过模拟问题的实际情况来求解,如poj1068、poj2632、poj1573、poj2993和poj2996。 二、图算法 1. 图的深度优先遍历(DFS)和广度优先遍历...
5. 构造法(poj3295, poj3259, poj1062, poj2253, poj1125, poj2240) 6. 最小生成树算法(prim, kruskal)(poj1789, poj2485, poj1258, poj3026) 7. 拓扑排序(poj1094) 8. 串(poj1035, poj3080, poj1936) 9. ...
- **示例题目**: poj3295 - **知识点**: - **贪心算法适用条件**:贪心选择性质和最优子结构性质。 - **应用场景**:活动选择问题、霍夫曼编码、最优装载问题等。 #### 4. 动态规划 - **内容**: 把复杂的问题...
(5) 构造法:poj3295 (6) 模拟法:poj1068, poj2632, poj1573, poj2993, poj2996 二、图算法 本部分涵盖了图算法,包括图的深度优先遍历和广度优先遍历、最短路径算法、最小生成树算法、拓扑排序、二分图的最大...
构造法和模拟法在poj3006、poj2255、poj3094等题目中有所涉及。 二、图算法 图算法在ACM竞赛中占据重要地位,包括深度优先遍历、广度优先遍历、最短路径算法(如Dijkstra、Bellman-Ford、Floyd和堆+Dijkstra)、...