类似正则表达式那种题目 那么我以样例来解释
输入:
4//4表示有几个字母
T F T F //表示对应字母的真假值
A B * C D + - + // * 代表 AND, + 代表 OR, - 代表 NOT.
输出:
F
解释:
AB* 为F
CD+为T
-(CD+)为F
F or F =F
代码如下:
#include<iostream>
using namespace std;
const int N=300;
int luoji[N],ans[N];
int cnt;
int main()
{
int n;
cin>>n;
string s;
for(int i=0;i<n;i++)
{
cin>>s;
if(s[0]=='T') luoji[i]=1;//将 T 和 F 转换成 1 和 0方便后续的位运算
else luoji[i]=0;
}
//模拟处理运算的过程
while(cin>>s)
{
if(s[0]>='A'&&s[0]<='Z') ans[cnt++]=luoji[s[0]-'A'];
else if(s[0]=='+')
{
cnt--;
ans[cnt-1]|=ans[cnt];
}
else if(s[0]=='*')
{
cnt--;
ans[cnt-1]&=ans[cnt];
}
else if(s[0]=='-')
{
ans[cnt-1]^=1;// 1->0 0->1;
}
}
if(!ans[0]) cout<<"F"<<endl;
else cout<<"T"<<endl;
return 0;
}