模拟就好,dfs模拟,记录深度计算
#include<stdio.h>
#include<string.h>
char s[32010],*S;
int dijk(char*& s,int d){
int ret=(~d&1),v;
for(;*s!=')';++s){
if(*s=='('){ v=dijk(++s,d+1); ret=(d&1?ret|v:ret&v); }
if(*s=='T'){ v=1;ret=(d&1?ret|v:ret&v); }
if(*s=='F'){ v=0;ret=(d&1?ret|v:ret&v); }
}
return ret;
}
int main(){
freopen("form.in","r",stdin);
freopen("form.out","w",stdout);
for(int i=1;~scanf("%s",s);++i){
S=s+1;
printf("%d. %s\n",i,dijk(S,0)?"true":"false");
}
}

本文介绍了一种使用深度优先搜索(DFS)算法来解析和计算由括号、'T'(真)、'F'(假)组成的逻辑表达式的C语言实现方法。该算法通过递归地遍历表达式树并根据当前深度计算最终逻辑值。

409

被折叠的 条评论
为什么被折叠?



