2 qq 33312212 qq_33312212 于 2016.03.06 11:57 提问

poj3295 运行输入之后就崩溃了 求大神看看 英汉题意如下
poj

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
A 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
大概题意
输入由p、q、r、s、t、K、A、N、C、E共10个字母组成的逻辑表达式,
其中p、q、r、s、t的值为1(true)或0(false),即逻辑变量;
K、A、N、C、E为逻辑运算符,
K --> and: x && y
A --> or: x || y
N --> not : !x
C --> implies : (!x)||y
E --> equals : x==y
问这个逻辑表达式是否为永真式。
PS:输入格式保证是合法的
我的 代码

 #include <iostream>
#include <vector>
#include <string>
#include <stack>

using namespace std;

bool c(bool a,bool b)
{
    if(a&&!b)
    {
        return false;
    }
    else
    {
        return true;
    }
}

bool e(bool a,bool b)
{
    if(a&&b||!a&&!b)
    {
        return true;
    }
    else
    {
        return false;
    }
}

bool solve(string str,int p,int q,int r,int s,int t)
{
    stack <bool> ele;
    unsigned int i;
    for(i=str.size()-1;i>=0;i--)
    {
        switch(str[i])
        {
            case 'p':ele.push((bool)p);break;
            case 'q':ele.push((bool)q);break;
            case 'r':ele.push((bool)r);break;
            case 's':ele.push((bool)s);break;
            case 't':ele.push((bool)t);break;
            case 'K':
            {
            bool a = ele.top();
            ele.pop();
            bool b = ele.top();
            ele.pop();
            ele.push(a&&b);
            }
            break;
            case 'A':
            {
            bool a = ele.top();
            ele.pop();
            bool b = ele.top();
            ele.pop();
            ele.push(a||b);
            }
            break;
            {
            case 'N':
            bool a = ele.top();
            ele.pop();
            ele.push(!a);
            }
            break;
            case 'C':
            {
            bool f = ele.top();
            ele.pop();
            bool g = ele.top();
            ele.pop();
            ele.push(c(f,g));
            }
            break;
            case 'E':
            {
            bool h = ele.top();
            ele.pop();
            bool j = ele.top();
            ele.pop();
            ele.push(e(h,j));
            break;
            }
            default:break;
        }
    }
    return ele.top();
}

int main()
{
    string str;
    bool flag = true;
    int i = 0;
    vector <string> ans;
    while(cin>>str&&str!="0")
    {
        int p,q,r,s,t;
        for(p=0;p<=1;p++)
        {
            for(q=0;q<=1;q++)
            {
                for(r=0;r<=1;r++)
                {
                    for(s=0;s<=1;s++)
                    {
                        for(t=0;t<=0;t++)
                        {
                            flag = solve(str,p,q,r,s,t);
                            if(!flag)
                            break;
                        }
                        if(!flag)
                        break;
                    }
                    if(!flag)
                    break;
                }
                if(!flag)
                break;
            }
            if(!flag)
            break;
        }
        if(flag)
        {
            ans.push_back("tautology");
        }
        else
        {
            ans.push_back("not");
            flag = true;
        }
    }
    for(i=0;i!=ans.size();i++)
    {
        cout<<ans[i]<<endl;
    }

    return 0;
}

1个回答

caozhy
caozhy   Ds   Rxr 2016.03.06 12:21
qq_33312212
qq_33312212 大神。。这个我看过 但是我想自己写一个 求你帮俺一看呗。。
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
POJ3295Tautology(构造法)
Tautology Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12088   Accepted: 4608 Description WFF 'N PROOF is a logic game played with dice. Each die has si
真机运行没问题 打包之后崩溃
问题描述:Xcode直接真机运行没有问题 页面不崩溃,打包之后,11之前的系统不崩溃,11之后的系统崩哭。第一次遇到这么奇葩的问题  手足无措  看crash日志  完全看不明白后来接入腾讯的Bugly找到原因推荐大家项目中添加Bugly...
打包后崩溃要注意的小坑
1:常常碰到这样的问题,运行程序好好的,但是一旦打包签名之后运行就是崩溃的,是不是很头疼,有人会说是6.0权限的问题,但是要是6.0以下的也会崩溃呢? 2:仔细想想肯定是混淆呀,文件压缩的问题,来看下这几个字段的含义在这个项目的build.gradle文件下: 3:很多人会看到我的正式release版本下面shrinkResources 为false。没办法本来应该是true来移除无用文件呢
VS2010 经常崩溃的一次解决办法
VS2010 经常崩溃的一次解决办法       今天在w
android app调试没问题,但打包签名的apk,运行时出现闪退怎么办?
在用Eclipse编写android app时,有时调试时没有问题,但一经打包签名,运行就出现闪退,还报错说找不到某某类。一开始以为是混淆导致的,后来我没有混淆竟然也还是这个问题。无奈只得网上寻找解决方案,最终还是有人解决了的,方法也很简单,只需按照下面几步来就可以了: 1.找到Project -> Build Automatically,取消它关闭自动编译 2.然后Clean一下 3.
真机调试没有问题。但是打包IPA包运行就会闪退
(之前一直在GITHUB上面写博客,最近想想这里好久没有更新了) + (model*)packetHeadInfoForBluetoothData:(NSData *)packetHeadData {         } 如果是返回什么类型记得一定要返回,真机调试没有问题,但是打包了IPA会闪退,希望帮助碰到同样问题的人,当初是忘记写返回类型了,真机高度又没有问题,就
Android完美解决获取Dialog中EditText输入值空指针程序崩溃问题
Android完美解决获取Dialog中EditText输入值空指针程序崩溃问题
Android6.0软件崩溃问题
软件在Android 6.0上运行崩溃问题
Xcode频繁意外退出的解决方案
在开发中经常会遇到项目冲突, 程序崩溃,Xcode异常等情况,有些问题第一次遇到时基本上就懵了,下面就来总结下常见的异常解决方案。 看看怎么办 完全不明所以的频繁退出 第一种 排除SVN冲突 在团队开发中,SVN冲突是最常见的了,程序异常时查看SVN文件冲突基本上成了本能。 排除SVN冲突 首先,右键主项目文件即xcodeproj文件,显示包内容,用文本编辑器查看包
VS调试Unity脚本时闪退
症状:可以下断点,但运行到断点处,卡顿一会后,VS会立马闪退;病因:安装了.net的反编译工具 .Net Reflector 导致;解决方法:卸载反编译工具,重启电脑后正常;