逻辑表达式求解
逻辑表达式求解时间限制(普通/Java):1000MS/3000MS运行内存限制:65536KByte总提交:145测试通过:25描述在离散数学中,∩和∪代表的是与、或的...
逻辑表达式求解
时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte
总提交: 145 测试通过: 25
描述
在离散数学中,∩和∪代表的是与、或的逻辑运算,给你一串只有∩和∪两种运算符的0,1表达式,求其结果。
这里规定∩符号为字符^,即数字六上档键;
∪符号为v,小写的字母v
输入
第一行一个整数n,表示有n个测试数据
以下n行每组数据,第一行一个整数t,表示这个表达式有t个字符
第二行为这个表达式,长度为t个字符,保证字符不超过10000个
输出
请输出每组表达式子的最终结果
样例输入
2
5
1^1v0
3
0^1
样例输出
1
0 展开
时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte
总提交: 145 测试通过: 25
描述
在离散数学中,∩和∪代表的是与、或的逻辑运算,给你一串只有∩和∪两种运算符的0,1表达式,求其结果。
这里规定∩符号为字符^,即数字六上档键;
∪符号为v,小写的字母v
输入
第一行一个整数n,表示有n个测试数据
以下n行每组数据,第一行一个整数t,表示这个表达式有t个字符
第二行为这个表达式,长度为t个字符,保证字符不超过10000个
输出
请输出每组表达式子的最终结果
样例输入
2
5
1^1v0
3
0^1
样例输出
1
0 展开
1个回答
2010-08-16
展开全部
// 我把自认为 ^ 与运算 优先级高于 v或运算
#include <iostream>
#include <string>
using namespace std;
int cal(string &str)
{
size_t pos;
while((pos = str.find('^',0)) != string::npos)
{
if(str[pos-1]=='1' && str[pos+1]=='1')
str.replace(pos-1,3,"1");
else
str.replace(pos-1,3,"0");
}
if((str.find('1',0)) != string::npos) return 1;
else return 0;
}
int main()
{
int n,t;
string str;
cin >> n;
while(n--)
{
cin >> t;
cin >> str;
cout << cal(str) << endl;
}
return 0;
}
#include <iostream>
#include <string>
using namespace std;
int cal(string &str)
{
size_t pos;
while((pos = str.find('^',0)) != string::npos)
{
if(str[pos-1]=='1' && str[pos+1]=='1')
str.replace(pos-1,3,"1");
else
str.replace(pos-1,3,"0");
}
if((str.find('1',0)) != string::npos) return 1;
else return 0;
}
int main()
{
int n,t;
string str;
cin >> n;
while(n--)
{
cin >> t;
cin >> str;
cout << cal(str) << endl;
}
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询