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:小心编译器的选择In Reply To:小心编译器的选择 Posted by:ENIAC at 2008-07-17 12:50:22 > 如果你是bool型判断与、或等等用&&,||的话,选C++会WA,不知道为什么!!选G++就AC了。 > 用位运算的&、|两个都可以过。 我用的&&、||的咋都能过呢??? #include<iostream> #include<stdio.h> #include<cstring> #include<stack> using namespace std; stack<bool>st; int p,q,r,s,t; bool isvariables(char c){ if(c=='p') return 1; if(c=='q') return 1; if(c=='r') return 1; if(c=='s') return 1; if(c=='t') return 1; return 0; } void push(char c){ if(c=='p') st.push(p); else if(c=='q') st.push(q); else if(c=='r') st.push(r); else if(c=='s') st.push(s); else if(c=='t') st.push(t); return; } void f(char c){ bool a,b; if(c=='K'){ a=st.top(); st.pop(); b=st.top(); st.pop(); st.push(a&&b); } else if(c=='A'){ a=st.top(); st.pop(); b=st.top(); st.pop(); st.push(a||b); } else if(c=='N'){ a=st.top(); st.pop(); st.push(!a); } else if(c=='C'){ a=st.top(); st.pop(); b=st.top(); st.pop(); st.push((!a)||b); } else if(c=='E'){ a=st.top(); st.pop(); b=st.top(); st.pop(); st.push(a==b); } return; } int main(){ char wff[110]; while(scanf("%s",wff)&&wff[0]!='0'){ int len=strlen(wff); bool flag=1; int i; 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<=1;t++){ for(i=len-1;i>=0;i--){ if(isvariables(wff[i])) push(wff[i]); else f(wff[i]); } if(st.top()==0) flag=0; st.pop(); } } } } } if(flag) printf("tautology\n"); else printf("not\n"); } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator