- 老师答疑区
- 帖子详情
老师参与
第二周的逻辑表达式的题,怎么解?提交以后显示超时!
邢传军
发表于2018年04月14日
<p>#include <iostream></p><p>#include <cstring></p><p>#include <cstdlib></p><p>using namespace std;</p><p>bool factor_value();</p><p>bool term_value();</p><p>bool expression_value();</p><p><br ></p><p>int main()</p><p>{</p><p> int count = 1;</p><p> while(1){</p><p> if(expression_value()){</p><p> cout<<"Expression "<<count<<": V";</p><p> }else{</p><p> cout<<"Expression "<<count<<": F";</p><p> }</p><p> cin.get();</p><p> count++;</p><p><br ></p><p> }</p><p><br ></p><p> return 0;</p><p>}</p><p>bool expression_value(){</p><p> bool result = factor_value();</p><p> bool more = true;</p><p> while(more){</p><p> char op = cin.peek();</p><p> if(op=='&'||op=='|'){</p><p> cin.get();</p><p> bool value = factor_value();</p><p> if(op=='&')</p><p> result = result&&value;</p><p> else</p><p> result = result||value;</p><p> }</p><p> else</p><p> more = false;</p><p> }</p><p> return result;</p><p>}</p><p>bool term_value(){</p><p> bool result = factor_value();</p><p> while(true){</p><p> char op = cin.peek();</p><p> if(op=='|'||op=='&'){</p><p> cin.get();</p><p> bool value = factor_value();</p><p> if(op=='|'){</p><p> result =result||value;</p><p> }</p><p> else{</p><p> result = result&&value;</p><p> }</p><p> }else{</p><p> break;</p><p> }</p><p> }</p><p> return result;</p><p>}</p><p>bool factor_value(){</p><p> bool result = false;</p><p> char c = cin.peek();</p><p> if(c=='('){</p><p> cin.get();</p><p> result = expression_value();</p><p> cin.get();</p><p> }else{</p><p> switch(c){</p><p> case 'V':</p><p> result = true;</p><p> cin.get();</p><p> break;</p><p> case 'F':</p><p> result = false;</p><p> cin.get();</p><p> break;</p><p> case '!':</p><p> cin.get();</p><p> result =!expression_value();</p><p> break;</p><p> case ' ':</p><p> cin.get();</p><p> result = factor_value();</p><p> }</p><p><br ></p><p> }</p><p> return result;</p><p>}</p><p><br ></p>
5
回复