POJ2106 Boolean Expressions / Openjudge Boolean Expressions (递归)全局题号1108

POJ 2106:Boolean Expressions 计算布尔表达式 - 堆栈 题意:bool表达式求值,V:true;F:false 题解:堆栈+优先级判定 给的输出样例比答案少一行== #include #include #include using namespace std; const int N = 110; int val[N], vtop, op[N], otop;//数值栈;运算符栈;栈顶指针 void ins(int b){ while(otop 阅读详情

#原题
1:Boolean Expressions
总时间限制: 1000ms 内存限制: 65536kB
描述
The objective of the program you are going to produce is to evaluate boolean expressions as the one shown next:
Expression: ( V | V ) & F & ( F | V )

where V is for True, and F is for False. The expressions may include the following operators: ! for not , & for and, | for or , the use of parenthesis for operations grouping is also allowed.

To perform the evaluation of an expression, it will be considered the priority of the operators, the not having the highest, and the or the lowest. The program must yield V or F , as the result for each expression in the input file.
输入
The expressions are of a variable length, although will never exceed 100 symbols. Symbols may be separated by any number of spaces or no spaces at all, therefore, the total length of an expression, as a number of characters, is unknown.

The number of expressions in the input file is variable and will never be greater than 20. Each expression is presented in a new line, as shown below.
输出
For each test expression, print "Expression " followed by its sequence number, ": ", and the resulting value of the corresponding test expression. Separate the output for consecutive test expressions with a new line.

Use the same format as that shown in the sample output shown below.
样例输入
( V | V ) & F & ( F| V)
!V | V & V & !F & (F | V ) & (!F | F | !V & V)
(F&F|V|!V&!F&!(F|F&V))
样例输出
Expression 1: F
Expression 2: V
Expression 3: V
来源
México and Central America 2004

##题目大意
V代表真,F代表非,&代表与,|代表或,!代表取反,输入多组数据,空格的数量不限,得出最后的结果。

##题目分析
采用递归的方法

很简单的一道题,如果知道了方法,就很容易解决。

我们先分析输入的样例。

我觉得大家至少也是大学生或者高中生(初中生,小学生的话那都是天才了)下面讲一下基本的数学知识。
表达式是由项和因子构成,项由因子构成。就这么简单。
而本题,表达式和项是一样的意思。因为没有像乘除加减这样优先次序。
从输入例子可以分析出 这一长串的字符可以分解成两部分 表达式和因子,或者说项和因子也行。
而项又是由一个个因子组成的。
所以逐层分解可以看出
其实就是因子与因子之间作逻辑运算。
最后的因子的结果在做逻辑运算。
最后得出整个表达式的结果

#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
using namespace std;
string s;
int expression_value(int result);//表达式求值
int factor_value(int result);//因子求值
int ptr = 0;//数组指针
int main()
{
    string ori;
    int ncase=0;
    while(getline(cin,ori))//删除空格
    {
    for(int i = 0;i<ori.size();i++)
        {
            char ch = ori[i];
            if(ori[i]!=' ')
                s=s+ch;
        }
        ptr = 0;//指针回到字符串头
        if(expression_value(0))
            cout<<"Expression "<<++ncase<<": V"<<endl;
        else
            cout<<"Expression "<<++ncase<<": F"<<endl;
        s.clear();ori.clear();//清空,以备下一组使用
    }
    return 0;
}
int expression_value(int result)
{
    result = factor_value(0);//表达式是由因子构成
    char ch = s[ptr];//查看字符
    while(ch == '&' || ch == '|')
    {
                ptr++;//指针往后移一位
        int tmp = factor_value(0);//读出一个因子的值
        if(ch == '&')
            result = result && tmp;//表达式与表达式做运算
        if(ch == '|')
            result = result || tmp;
        ch = s[ptr];//查看下一个字符
    }
    return result;
}
int factor_value(int result)
{
    char ch = s[ptr];
    while(ch =='(' || ch == '!' || ch == 'V' || ch == 'F' )
    {
        ptr++;
        if(ch == '(')
        {
            result = expression_value(0);// ()内相当于一个表达式
            ptr++;// 跳过 ")"
        }
        if(ch == '!')
        {
            result = ! factor_value(0);
        }
        if(ch == 'V')
        {
            return 1;
        }
        if(ch == 'F')
        {
            return 0;
        }
        ch = s[ptr];//查看下一个字符
    }
    return result;
}
POJ2014考研试题表达式·表达式树·表达式求值答案 立即下载

相关推荐

AI驱动的研发流程:定义高度专业和系统化的规划基准

在人工智能(AI)浪潮席卷全球的今天,软件研发的范式正经历着一场深刻而迅速的变革。AI技术的渗透,从最初的辅助工具角色,正逐步演变为驱动整个研发流程的核心引擎。传统的研发流程和项目管理方法论,在面对AI带来的高效率、高智能以及高复杂性挑战时,显得力不从心。企业对快速交付高质量软件产品、有效控制风险、并保证全流程可追溯性的需求日益迫切。

形上得其象,形下合于数;阴阳自济,玄理自明。 2181

POJ 2106(布尔表达式的计算)

测试数据: input F &amp;!F | !V|!V &amp; !F&amp; !( F | F&amp; (V | !F| !V| V&amp; (V|F))) F&amp; !F|!V|!F&amp; (V|F| !V) &amp; !F&amp;!(F|F&amp; (V | !F|!V| V &amp;(V| F) )) F&amp;!F | !V| !...

兜率工的博客 2369

AI 辅助代码审查:开启代码质量管控的智能时代

AI辅助代码审查正在改变传统的代码质量管控方式。通过自动化分析、智能反馈和上下文感知,AI不仅提高了代码审查的效率,还提升了代码质量的一致性和可维护性。随着机器学习和深度学习技术的不断发展,未来AI将成为开发者日常工作中强大的助手,进一步推动软件开发向智能化、自动化方向发展。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 3228

POJ 2106 / México and Central America 2004 Boolean Expressions (用栈处理表达式)

Boolean Expressions http://poj.org/problem?id=2106 Time Limit: 1000MS Memory Limit: 30000K Description The objective of the program you are going to produce is to evaluate boolean e

AC,∑ndless 2094

从零到一:STM32 CubeMX与WS2812B的DMA驱动艺术

本文详细介绍了如何使用STM32 CubeMX和DMA技术驱动WS2812B RGB LED灯条,从硬件设计到软件实现的全过程。通过CubeMX配置定时器和DMA,实现高效的PWM波形生成与数据传输,解决传统GPIO控制资源占用高的问题。文章还提供了颜色编码、动画效果实现及常见问题解决方案,助力开发者快速掌握智能LED控制技术。

weixin_28278377的博客 978

TM1621/HT1621 段码LCD驱动器

TM1621 LCD 驱动器

qq_45325304的博客 1万+

POJ 2106 Boolean Expressions

Boolean Expressions Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 3051   Accepted: 934 Description The objective of the program you are going to produce is

kdwycz的刷题空间 1328

POJ 2106 Boolean Expressions(递归算法)

1:Boolean Expressions 总时间限制: 1000ms 内存限制: 65536kB 描述The objective of the program you are going to produce is to evaluate boolean expressions as the one shown next:  Expression: ( V |

lovemylife1234的博客 4789

RK3588嵌入式AI部署实战:从环境搭建到模型推理全链路

嵌入式AI部署涉及交叉编译、NPU驱动、模型量化与运行时环境等多个技术环节,其核心挑战在于软硬件版本矩阵的严格匹配。在边缘计算场景中,RK3588凭借6TOPS NPU算力成为热门平台,但环境搭建与模型转换的复杂性常导致部署效率低下。通过容器化工具链管理、量化参数对齐及多线程推理优化,可显著提升部署稳定性与推理性能。典型应用包括智能安防、工业质检与视频结构化分析。本文围绕RK3588的AI部署与环境搭建,系统梳理从系统烧录到板端推理的完整实践路径。

weixin_42520573的博客 282

检索增强生成(RAG)、微调(Fine-tuning)与知识蒸馏(Knowledge Distillation):核心差异与技术选型指南

在自然语言处理(NLP)领域,大型预训练语言模型(如GPT、BERT系列)的崛起彻底改变了技术生态。面对实际业务场景中模型效果优化与资源效率平衡的永恒命题,开发者主要依赖三大技术路径:检索增强生成(Retrieval-Augmented Generation, RAG)、模型微调(Fine-tuning)和知识蒸馏(Knowledge Distillation)。本文将通过技术原理拆解、典型应用场景对比和实战选型策略三个维度,深入解析这三种技术的本质差异。

fudaihb的博客 1826

递归-openjudge-1108:Boolean Expressions

Boolean Expressions 总时间限制: 1000ms 内存限制: 65536kB 描述The objective of the program you are going to produce is to evaluate boolean expressions as the one shown next:  Expression: ( V | V ) & F

咖啡的博客 510

落地实战!Python构建地方政府公开数据爬虫:政策/数据/规划全维度抓取(附反爬适配+数据清洗)

政务公开数据爬虫的核心不是“技术多先进”,而是“适配政务网站的特性”——慢一点、稳一点、合规一点,比追求抓取速度更重要。多地市爬虫集群:通过配置文件管理不同地市的URL规则,实现全省/全国政务数据抓取;图片表格识别:结合OCR工具(如pytesseract)识别政务网站的图片表格,转换为结构化数据;数据可视化:将抓取的统计数据导入PowerBI/Matplotlib,实现区域发展趋势分析。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1799

openjudge2106 Boolean Expressions

DescriptionThe objective of the program you are going to produce is to evaluate boolean expressions as the one shown next: Expression: ( V | V ) &amp; F &amp; ( F | V )where V is for True, and F is fo...

残梦听雨 1901

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

POJ 2106 Boolean Expressions 笔记

计算布尔表达式结果,V为真,F为假,三个操作符 ! , & , | 优先级相同。 

woniupengpeng的专栏 646

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

POJ 2106 Boolean Expressions (栈,位运算)

跟四则混合运算一个算法 建两个栈,一个保存操作符,一个保存操作数 根据操作符的优先级给操作符编号,最低优先级的数字最大(也可以反过来,随便玩),然后当操作符入栈的时候,如果栈顶数字比他大,则执行栈顶操作符直到栈为空或栈顶小于等于入栈操作符。 最后别忘了完结的时候执行完栈内操作符。 #include void execute(char mode,char *stack,int *po

xtq的专栏 2247

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

递归之 Boolean Expressions

关于题目描述The objective of the program you are going to produce is to evaluate boolean expressions as the one shown next: Expression: ( V | V ) & F & ( F | V )where V is for True, and F is for False. The

qiaoyifan的博客 1948

第三周测验 简单的整数划分问题和Boolean Expressions

006:简单的整数划分问题 描述 将正整数n 表示成一系列正整数之和,n=n1+n2+…+nk, 其中n1&gt;=n2&gt;=…&gt;=nk&gt;=1 ,k&gt;=1 。 正整数n 的这种表示称为正整数n 的划分。正整数n 的不同的划分个数称为正整数n 的划分数。 输入 标准的输入包含若干组测试数据。每组测试数据是一个整数N(0 &lt; N &lt;= 50)。 输出 对于...

yanyanwenmeng的博客 943

POJ 2106(转载POJ discuss)

/* 先把所有可简化的字符串写出来 比如!!简化为没有 (V)简化成V 然后每读一个非空格字符 都扫描一次其后缀是否是可化简的字符串 是就化简 读到EOF或者\n就输出整个字符串就好 显然合法的输入一定可以化简成F或V 有个坑点是最后一个输入似乎结尾是EOF不是\n */ /* 采用的是枚举法;先枚举所有的可能性,再来一一匹配,并简化;最后只有一个值; */ #include&lt;stdi...

julicliy的博客 404

poj 2106

原题链接:http://poj.org/problem?id=2106 题意:或、与、 非的多元表达式的求值; 思路:中缀表达式变为后缀表达式; 代码: 1 #include<cstdio> 2 #include<iostream> 3 #include<stack> 4 #include<string> ...

dfsy999999的博客 468

POJ 2106(一个一个死算出来的)

/* 就是每当遇到一个数据,就进行判断这个数据的前面一个操作符号是什么,可不可运算; 就这样运行下去,直到只剩下一个数据了; */ #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;cstring&gt; #include &lt;stack&gt; using namespace std; stack&lt;c...

julicliy的博客 473

模板驱动型文档自动化:结构化填充与一键交付实践指南

文档自动化本质上是将重复性文档生产从‘人工排版+校验’升级为基于结构化数据的确定性输出。其核心原理在于通过可编程模板定义数据层约束、逻辑层分支与呈现层样式,实现内容与格式的解耦。技术价值体现在错误率趋近于零、人力成本下降85%以上,并支撑合规、销售、咨询等高频标准化场景。本文聚焦Sqribble平台,深入解析模板驱动如何落地为工程化能力——涵盖三层模板设计、多源数据注入(CSV/表单/API)、智能分发及安全加固,尤其强调‘结构化填充’与‘一键交付’两大关键实践路径。

weixin_30653023的博客 490

poj 2106 Boolean Expressions(特殊的表达式求值)

poj 2106 Boolean Expressions(特殊的表达式求值)

PKU_ZZY的博客 2589

POJ 2106

知识点:栈的应用语法经验,主函数外的函数中的指针变量不能付给主函数中的指针,因为函数调用完后就会释放内存,赋值相当于没赋#include<iostream> using namespace std; const int maxn=110; void trans(char *exp,char *atexp); int oc( char *s); int main() { ...

weixin_34311757的博客 203

poj2106——Boolean Expressions

<br />题意:求表达式运算<br />思路:同数字表达式运算一样,先转后缀,再求值。<br />注意点:1,'('在进栈时,优先级最高,出栈时相反;<br />            2,对于'!',单目表达式的计算,在转后缀的时候,需将数值进栈,再将其压入后缀表达式中;<br />#include<cstdio> #include<cstring> #include<iostream> using namespace std; const int len =120; char infi

r_ax的专栏 1067

POJ 2106 Boolean Expressions(模拟+LL1)

Description 判断公式的F或V Input 多组用例,每组用例为以字符串表示公式,以文件尾结束输入 Output 对于每组用例,输出公式的结果F or V 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))

ZSQ 1160
上一篇: ZOJ1003 Crashing Balloon
下一篇: OpenJudge简单的整数划分问题两种方法(DFS)(动态规划0ms),全局题号7215,已AC
Link_Ray
博客等级 码龄9年 44粉丝 156原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值