Poj3295  Tautology

本文介绍了一种通过栈操作来判断逻辑公式是否为永真的方法。利用递归定义的逻辑游戏WFF'NPROOF,文章详细解析了如何根据变量的不同取值来评估公式的真假,并提供了一个C++实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Tautology
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 10425 Accepted: 3956

Description

WFF 'N PROOF is a logic game played with dice. Each die has six faces representing some subset of the possible symbols K, A, N, C, E, p, q, r, s, t. A Well-formed formula (WFF) is any string of these symbols obeying the following rules:

  • p, q, r, s, and t are WFFs
  • if w is a WFF, Nw is a WFF
  • if w and x are WFFs, Kwx, Awx, Cwx, and Ewx are WFFs.
The meaning of a WFF is defined as follows:
  • p, q, r, s, and t are logical variables that may take on the value 0 (false) or 1 (true).
  • K, A, N, C, E mean and, or, not, implies, and equals as defined in the truth table below.
Definitions of K, A, N, C, and E
     w  x  Kwx  Awx   Nw  Cwx  Ewx
  1  1  1  1   0  1  1
  1  0  0  1   0  0  0
  0  1  0  1   1  1  0
  0  0  0  0   1  1  1

tautology is a WFF that has value 1 (true) regardless of the values of its variables. For example, ApNp is a tautology because it is true regardless of the value of p. On the other hand, ApNq is not, because it has the value 0 for p=0, q=1.

You must determine whether or not a WFF is a tautology.

Input

Input consists of several test cases. Each test case is a single line containing a WFF with no more than 100 symbols. A line containing 0 follows the last case.

Output

For each test case, output a line containing tautology or not as appropriate.

Sample Input

ApNp
ApNq
0

Sample Output

tautology

not

此题虽然做法是用构造法但是,还是用栈求表达式的方法。题目大意就是求出表达式若最后的表达式值为1输出

tautology,else有一个为假输出not,即看是否为永真式。

#include <iostream>
#include<cstdio>
#include<cstring>
char st[1000];
int q,p,s,r,t,c[1000];
using namespace std;
void D()
{
    int z=0,x,y;
    int l=strlen(st);
    for(int i=l-1;i>=0;i--)//要倒着进行操作因为栈的处理最后进入的线处理
    {
        if(st[i]=='p')//p,q,r,s,t的取值只有0,1
            c[z++]=p;
        else if(st[i]=='q')
            c[z++]=q;
        else if(st[i]=='r')
            c[z++]=r;
        else if(st[i]=='s')
            c[z++]=s;
        else if(st[i]=='t')
            c[z++]=t;
        else if(st[i]=='K')
            {
                x=c[--z];
                y=c[--z];
                c[z++]=(x&&y);
            }
        else if(st[i]=='A')
            {
                x=c[--z];
                y=c[--z];
                c[z++]=(x||y);
            }
        else if(st[i]=='N')
            {
                x=c[--z];
                c[z++]=(!x);
            }
        else if(st[i]=='C')
            {
                x=c[--z];
                y=c[--z];
                if(x==1&&y==0)
                    c[z++]=0;
                else
                    c[z++]=1;
            }
        else if(st[i]=='E')
            {
                x=c[--z];
                y=c[--z];
                if( (x==0&&y==0)||(x==1&&y==1) )
                    c[z++]=1;
                else
                    c[z++]=0;
            }
    }
}
int solve()
{
    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++)
                    {
                            D();
                            if(c[0]==0)//有一个假就输出not
                                return 0;
                    }
     return 1;
}
int main()
{
    int n,m,i,j,k;
    while(cin>>st)
    {
        if(!strcmp(st,"0"))
            break;
        if(solve())//注意并不是输入什么字符才进行对这些字符的处理,而是整体都考虑
            cout<<"tautology"<<endl;
        else
            cout<<"not"<<endl;
    }
    return 0;
}

内容概要:本文档详细介绍了基于MATLAB实现的无人机三维路径规划项目,核心算法采用蒙特卡罗树搜索(MCTS)。项目旨在解决无人机在复杂三维环境中自主路径规划的问题,通过MCTS的随机模拟与渐进式搜索机制,实现高效、智能化的路径规划。项目不仅考虑静态环境建模,还集成了障碍物检测与避障机制,确保无人机飞行的安全性和效率。文档涵盖了从环境准备、数据处理、算法设计与实现、模型训练与预测、性能评估到GUI界面设计的完整流程,并提供了详细的代码示例。此外,项目采用模块化设计,支持多无人机协同路径规划、动态环境实时路径重规划等未来改进方向。 适合人群:具备一定编程基础,特别是熟悉MATLAB和无人机技术的研发人员;从事无人机路径规划、智能导航系统开发的工程师;对MCTS算法感兴趣的算法研究人员。 使用场景及目标:①理解MCTS算法在三维路径规划中的应用;②掌握基于MATLAB的无人机路径规划项目开发全流程;③学习如何通过MCTS算法优化无人机在复杂环境中的飞行路径,提高飞行安全性和效率;④为后续多无人机协同规划、动态环境实时调整等高级应用打下基础。 其他说明:项目不仅提供了详细的理论解释和技术实现,还特别关注了实际应用中的挑战和解决方案。例如,通过多阶段优化与迭代增强机制提升路径质量,结合环境建模与障碍物感知保障路径安全,利用GPU加速推理提升计算效率等。此外,项目还强调了代码模块化与调试便利性,便于后续功能扩展和性能优化。项目未来改进方向包括引入深度强化学习辅助路径规划、扩展至多无人机协同路径规划、增强动态环境实时路径重规划能力等,展示了广阔的应用前景和发展潜力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值