Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

为什么RE

Posted by yimmon at 2012-03-22 21:41:29 on Problem 3295
#include <iostream>
#include <stdio.h>
#include <stack>

using namespace std;

bool IsUpper(char ch)
{
    if(ch >= 65 && ch <= 90)
        return true;
    return false;
}

bool Cal(char* str, bool p, bool q, bool r, bool s, bool t)
{
    stack<bool> b;
    stack<char> c;
    int i, flag = 0;
    for(i = 0; str[i] != 0; i++)
    {
        if(IsUpper(str[i]))
        {
            c.push(str[i]);
            if(str[i] == 'N')
                flag = 1;
        }
        else
        {
            switch(str[i])
            {
                case 'p':
                    b.push(p);
                    break;
                case 'q':
                    b.push(q);
                    break;
                case 'r':
                    b.push(r);
                    break;
                case 's':
                    b.push(s);
                    break;
                case 't':
                    b.push(t);
                    break;
            }
            if(flag)
            {
                bool tmp = b.top();
                b.pop();
                b.push(~tmp);
                c.pop();
                flag = 0;
            }
        }
    }
    bool x, y;
    while(!c.empty())
    {
        y = b.top();
        b.pop();
        x = b.top();
        b.pop();
        char tmp = c.top();
        c.pop();
        switch(tmp)
        {
            case 'K':
                b.push(x & y);
                break;
            case 'A':
                b.push(x | y);
                break;
            case 'C':
                    b.push(~x | y);
                break;
            case 'E':
                b.push(~(x ^ y));
                break;
        }
    }
    return b.top();
}

int main()
{
    char str[501];
    int p,q,r,s,t,flag;
    while(scanf("%s", str) && str[0] != '0')
    {
        flag = 1;
        for(p = 0; p < 2 && flag; p++)
            for(q = 0; q < 2 && flag; q++)
                for(r = 0; r < 2 && flag; r++)
                    for(s = 0; s < 2 && flag; s++)
                        for(t = 0; t < 2 && flag; t++)
                            if(!Cal(str,p,q,r,s,t))
                                flag = 0;
        if(flag)
            puts("tautology");
        else
            puts("not");
    }
    return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator