zoukankan      html  css  js  c++  java
  • POJ3295 Tautology 枚举+DFS

      题目链接:http://poj.org/problem?id=3295

      水题本质。数据量小,直接枚举判断即可。但要注意在搜索的时候,如果进行逻辑运算&&和||时, 存在短路特性的!比如,dfs(cur+1)||dfs(cur+2),如果dfs(cur+1)==ture,那么dfs(cur+2)就不会访问了,所以导致cur的下标访问出错,那么我们在写这种表达式的时候,把dfs分别赋值然后再去进行逻辑判断是一种好习惯,可以减少不必要的错误!我开始这里没有注意好,wa了!然后还提一下,C++是从逻辑判断符的右边开始判断的,而G++是从左边开始的,也就是这题有些人C++和G++不能同时通过的原因。

     1 //STATUS:C++_AC_0MS_168KB
     2 #include<stdio.h>
     3 #include<stdlib.h>
     4 #include<string.h>
     5 #include<math.h>
     6 #include<iostream>
     7 #include<string>
     8 #include<algorithm>
     9 #include<vector>
    10 #include<queue>
    11 #include<stack>
    12 #include<map>
    13 using namespace std;
    14 #define LL long long
    15 #define pii pair<int,int>
    16 #define Max(a,b) ((a)>(b)?(a):(b))
    17 #define Min(a,b) ((a)<(b)?(a):(b))
    18 #define mem(a,b) memset(a,b,sizeof(a))
    19 #define lson l,mid,rt<<1
    20 #define rson mid+1,r,rt<<1|1
    21 const int MAX=210,INF=0x3f3f3f3f;
    22 const LL LLNF=0x3f3f3f3f3f3f3f3fLL;
    23 
    24 int vis[MAX];
    25 char str[MAX],s[MAX],w[MAX];
    26 int n;
    27 
    28 int dfs(int cur)
    29 {
    30     if(vis[cur])return dfs(cur+1);
    31     vis[cur]=1;
    32     if(s[cur]<2)return s[cur];
    33     if(s[cur]=='N')return !dfs(cur+1);
    34     int a,b;
    35     a=dfs(cur+1);b=dfs(cur+2);
    36     if(s[cur]=='K')return a&&b;
    37     if(s[cur]=='A')return a||b;
    38     if(s[cur]=='C')return !a||b;
    39     return a==b;
    40 }
    41 
    42 int main()
    43 {
    44  //   freopen("in.txt","r",stdin);
    45     w['p']=0,w['q']=1,w['r']=2,w['s']=3,w['t']=4;
    46     int i,j,len,ok;
    47     n=(1<<5);
    48     while(~scanf("%s",str) && str[0]!='0')
    49     {
    50         len=strlen(str);
    51         ok=1;
    52         for(i=0;i<n;i++){
    53             strcpy(s,str);
    54             mem(vis,0);
    55             for(j=0;j<len;j++)
    56                 if(s[j]>='a' && s[j]<='z')s[j]=(i&(1<<w[s[j]]))?1:0;
    57             if(!dfs(0)){ok=0;break;}
    58         }
    59         printf("%s\n",ok?"tautology":"not");
    60     }
    61     return 0;
    62 }
  • 相关阅读:
    Word Embedding理解
    几种简单的主题模型(生成模型)
    BTM学习小记
    LDA学习小记
    word2vec训练好的词向量
    java带字符编码编译
    web安全领域常见的攻击方式
    宝塔webhook布置gitee自动同步服务端
    unity3d学习路线
    缩略图含裁剪文件
  • 原文地址:https://www.cnblogs.com/zhsl/p/2820569.html
Copyright © 2011-2022 走看看