| Time Limit: 1000MS | Memory Limit: 30000K | |
| Total Submissions: 3665 | Accepted: 1104 |
Description
Input
Output
Sample Input
( V | V ) & F & ( F| V) !V | V & V & !F & (F | V ) & (!F | F | !V & V) (F&F|V|!V&!F&!(F|F&V))
Sample Output
Expression 1: F Expression 2: V Expression 3: V
Source
ACcode:#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
int sum[110],poss;
int op[110],poso;
void insert(int t){
while(poso&&op[poso-1]==3){
t=!t;
--poso;
}
sum[poss++]=t;
}
void calc(){
int b=sum[--poss];
int a=sum[--poss];
int o=op[--poso];
int c=(a&b);
if(o==1)c=(a|b);
insert(c);
}
int main(){
int loop=1;
char c;
while((c=getchar())!=EOF){
poss=poso=0;
do{
if(c=='('){
op[poso++]=0;
}else if(c==')'){
while(poso&&op[poso-1]!=0)
calc();
--poso;
insert(sum[--poss]);
}else if(c=='!'){
op[poso++]=3;
}else if(c=='&'){
while(poso&&op[poso-1]>=2)
calc();
op[poso++]=2;
}else if(c=='|'){
while(poso&&op[poso-1]>=1)
calc();
op[poso++]=1;
}
else if(c=='V'||c=='F'){
insert(c=='V'?1:0);
}
}while((c=getchar())!='\n'&&c!=EOF);
while(poso)calc();
printf("Expression %d: %c\n",loop++,(sum[0]?'V':'F'));
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/zp___waj/article/details/47725399