Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
讨论中的数据都过了 还是RE 求特殊数据!!!!!!!!!!!!!!!#include<cstdio> #include<iostream> #include<stack> #include<string> using namespace std; struct Pri{ char op; int pri; }lpri[5]={{'(',1},{'|',3},{'&',5},{'!',6},{')',8}}, rpri[5]={{'(',8},{'|',2},{'&',4},{'!',7},{')',1}}; int find_left(char op) { for(int i=0;i<5;i++) if(lpri[i].op==op) return lpri[i].pri; } int find_right(char op) { for(int i=0;i<5;i++) if(rpri[i].op==op) return rpri[i].pri; } int Precede(char op1,char op2) { int L=find_left(op1); int R=find_right(op2); if(L==R) return 0; if(L>R) return 1; return -1; } int Run(stack<int>& num,char op) { int a=num.top(); num.pop(); if(op=='!') return !a; // cout<<"a="<<a; int b=num.top(); num.pop(); // cout<<" b="<<b; // cout<<" op="<<op<<endl; switch(op) { case '|': return a||b; case '&': return a&&b; } } int main() { string s; int ca=1; while(getline(cin,s)) { int i; stack<int> num; stack<char> op; for(i=0;i<s.length();i++) { // cout<<"i="<<i<<endl; if(s[i]==' ') { // cout<<"char is space"<<endl; continue; } else if(s[i]=='V') { // cout<<"op is "<<s[i]<<endl; num.push(1); } else if(s[i]=='F') { // cout<<"op is "<<s[i]<<endl; num.push(0); } else { if(op.empty()) { op.push(s[i]); // cout<<"space->"<<s[i]<<endl; } else { int judg=Precede(op.top(),s[i]); // cout<<"judg="<<judg<<" op is "<<s[i]<<endl; int t; switch(judg) { case 0: // cout<<"put out "<<op.top()<<endl; op.pop();break; case 1: t=Run(num,op.top()); // cout<<"Run(num,op.top())="<<t<<endl; num.push(t); op.pop(); i--;break; case -1: // cout<<"get in "<<s[i]<<endl; op.push(s[i]);break; } } } } while(!op.empty()) { num.push(Run(num,op.top())); op.pop(); } if(num.top()==1) printf("Expression %d: V\n",ca++); else printf("Expression %d: F\n",ca++); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator