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

为什么这个代码C++编译不过 G++就A了 提示也很奇怪

Posted by 14110581002 at 2015-07-30 19:19:09 on Problem 3295
#include<iostream>
#include<cstdio>
#include<stack>

using namespace std;

string str;
int point[5];
int judge_ans;
int key;
//int test;

int judge()
{
    stack<int>sta;
    int len = str.size();
    int i;
    for(i = len - 1; i >= 0; --i)
    {
        if(str[i] >= 'p' && str[i] <= 't')
        {
            sta.push(point[str[i]-'p']);
        }
        else
        {
            switch(str[i])
            {
            case 'K':
            {
                int a=sta.top();
                sta.pop();
                int b=sta.top();
                sta.pop();
                int c;
                if(a&&b)
                {
                    c=1;
                }
                else
                {
                    c=0;
                }
                sta.push(c);
                break;
            }
            case 'A':
            {
                int a=sta.top();
                sta.pop();
                int b=sta.top();
                sta.pop();
                int c;
                if(a==1||b==1)
                {
                    c=1;
                }
                else
                {
                    c=0;
                }

                sta.push(c);
                break;
            }

            case 'N':
            {
                int a=sta.top();
                sta.pop();
                int c;
                if(a)
                {
                    c=0;
                }
                else
                {
                    c=1;
                }
                sta.push(c);
                break;
            }

            case 'C':
            {
                int a=sta.top();
                sta.pop();
                int b=sta.top();
                sta.pop();
                int c;
                if(a==b)
                {
                    c=1;
                }
                else
                {
                    c=b;
                }
                sta.push(c);

                break;
            }

            case 'E':
            {
                int a=sta.top();
                sta.pop();
                int b=sta.top();
                sta.pop();
                int c;
                if(a==b)
                {
                    c=1;
                }
                else
                {
                    c=0;
                }
                sta.push(c);
                break;
            }
            }
        }
    }
    return sta.top();
}

void dp(int m,int mmax)
{
    if(key)
    {
        return;
    }
    int i;
    if(m==mmax)
    {
        int t=judge();
        if(judge_ans!=-1)
        {
            if(t!=judge_ans)
            {
                key=1;
            }
        }
        else
        {
            judge_ans=t;
        }
        return;
    }
    for(i=0; i<2; ++i)
    {
        point[m]=i;
        dp(m+1,mmax);
    }
}

int main()
{
    while(cin>>str,str[0]!='0')
    {
        judge_ans=-1;
        key=0;
        dp(0,5);
        if(key||judge_ans==0)
        {
            cout<<"not"<<endl;
        }
        else
        {
            cout<<"tautology"<<endl;
        }
    }
}

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