华为2012校招成都站8:00最后一题,表达式计算源代码

2012年高教社杯全国大学生数学建模竞赛 B 题:《太阳能小屋的设计》真题解析与 MATLAB 解决方案 🏆 本文已收录于专栏:《滚雪球学数学建模(含历年真题)》,持续更新最新及历年数学建模竞赛资料,每篇内容力求做到“问题讲透、模型讲清、代码可用、论文可参考”,帮助你从零开始逐步建立完整的数学建模知识体系。 阅读详情

主要是数字可能是多位数,需要处理!本程序没有做异常处理,要求表达式串正确!

其中有两个内部循环代码是重复的,最好写成一个函数,这里就不改了

转载 请保留链接 http://blog.youkuaiyun.com/challenge_c_plusplus/article/details/7982076

/*表达式计算-华为校招
Author : Milo.Wang
Date : 2012/9/15
*/
#include <iostream>
#include <cstring>
using namespace std;

void Expr(const char *expr, int *ret)
{
	char expr1[1024];
	char expr2[1024];
	strcpy(expr1,expr);
	strcpy(expr2,expr);
	int opds[1024];
	char oprs[1024];
	int idxd = 0, idxr = 0;
	int opd_idx = -1;
	char * p = strtok(expr1,"()*+-");
	while(p != NULL)
	{
		opds[idxd++] = atoi(p);
		p = strtok(NULL,"()*+-");
	}
	int i;
	int digit_flag = true;
	for(i = 0; expr2[i] != '\0'; ++i)
	{
		switch(expr2[i])
		{
		case '(':
		case ')':
		case '+':
		case '-':
		case '*':
			digit_flag = true;
			oprs[idxr++] = expr2[i];
			break;
		default:
			if(digit_flag)
			{
				digit_flag = false;
				oprs[idxr++] = '#';//特殊符号,标示有一个数字
			}
		}
	}
	oprs[idxr++] = '\0';

	int opd_stack[1024];
	char opr_stack[1024];
	int opd_top = -1;
	int opr_top = -1;
	int opdr,opdl;
	for(i = 0; i < idxr; ++i)
	{
		char ch;
		switch((ch = oprs[i]))
		{
		case '*':
		case '(':
			opr_stack[++opr_top] = ch;
			break;
		case '+':
		case '-':
			while(opr_top > -1 && opr_stack[opr_top] == '*')
			{
				--opr_top;
				opdr = opd_stack[opd_top--];
				opdl = opd_stack[opd_top--];
				opd_stack[++opd_top] = opdl * opdr;
			}
			opr_stack[++opr_top] = ch;
			break;
		case ')':
			while(opr_top > -1 && opr_stack[opr_top] != '(')
			{
				opdr = opd_stack[opd_top--];
				opdl = opd_stack[opd_top--];
				char c;
				int result;
				switch((c = opr_stack[opr_top--]))
				{
				case '*':
					result = opdl * opdr;
					break;
				case '+':
					result = opdl + opdr;
					break;
				case '-':
					result = opdl - opdr;
					break;
				}
				opd_stack[++opd_top] = result;
			}
			if(opr_stack[opr_top] == '(')
				--opr_top;
			break;
		case '\0':
			while(opr_top > -1)
			{
				opdr = opd_stack[opd_top--];
				opdl = opd_stack[opd_top--];
				char c;
				int result;
				switch((c = opr_stack[opr_top--]))
				{
				case '*':
					result = opdl * opdr;
					break;
				case '+':
					result = opdl + opdr;
					break;
				case '-':
					result = opdl - opdr;
					break;
				}
				opd_stack[++opd_top] = result;
			}
			break;
		case '#':
			opd_stack[++opd_top] = opds[++opd_idx];
		}
	}
	*ret = opd_stack[opd_top];
}
int main(int argc, char *argv[])
{
	const char *str = "5+6*(5-2)-10";
	int ret;
	Expr(str,&ret);
	cout << str << " = " << ret << endl;
	return 0;
}



 

【信息科学与工程学】【数据中心】第三十五篇 云计算数据中心的学科知识04 编号学科(课程)核心知识点在云计算/云存储/云网络/云安全/云MaaS中的作用代表教材/资料/论文 + 数学方程式列表工业界应用D1421​云原生数据库:TiDB​HTAP(混合事务/分析处理)、分布式SQL、水平扩展、强一致(Raft)、自动故障恢复、与MySQL兼容、TiFlash列式引擎提供弹性扩展的分布式数据库;支撑高并发在线交易与实时分析教材:《TiDB in Action》PingCAP(2020) 论文:《TiDB: A Raft-based HTAP Database》(2017) 阅读详情

相关推荐

【信息科学与工程学】计算机科学与自动化——第二十四篇 编译器10——编译原理与词法分析02

链接时优化:全局DCE(579)、LTO(580)安全编译:CFI(581、586)、ASan(582)、UBSan(583)、MSan(584)、TSan(585)、CET(587)、PAC(588)、MTE(589)、SFI(590)、Wasm沙箱(591)侧信道与秘密:侧信道缓解(592)、常量时间(593)、秘密清理(594)内存安全:ASLR(595)、栈保护(596)、整数溢出检测(597)、除零检测(598)、空指针检测(599)、数组边界检查(600)至此编号达到600。

weixin_49199313的博客 194

2012华为校园招聘机试(成都)-2

第二道:对一个数组,将数组中偶数从大到小排序,奇数从小到大排序,奇数和偶数交叉着放且输出数组第一位放奇数  若奇数和偶数不等长,则把剩下的直接放到数组中。   -------------------思路:先进行奇偶判断,得到奇数和偶数数组。然后对两数组排序,进行长度判断,最后

integrity0123的专栏 2896

【合规领域】【信息科学与工程学】计算机科学与自动化——第五百篇 国产化/XC解决方案 第一篇 国产化产品适配

编号类型信创硬件及国产化硬件信创及国产化软件领域算法应用场景算法名称算法中的函数列表及每个函数逐步推理思考的数学表达式及函数调用关系及参数列表及参数数值设计及每个函数的完整代码及数学复杂度(时间复杂度、空间复杂度、逻辑复杂度)及时序流程图、通信图、架构图满足的用户/管理员规模关联知识和法律法规1适配方法华为鲲鹏920处理器(ARMv8架构)、飞腾FT-2000/4(ARMv8)银河麒麟V10(内核5.10)、达梦DM8数据库、OpenSSL 1.1.1(国密补丁)信息安全。

weixin_49199313的博客 392

腾讯2012.4.25实习生招聘笔试题

一、选择题 1、计算表达式x6+4x4+2x3+x+1最少需要做()次乘法 A、3     B、4       C、5     D、6 分析:第一次乘法:x^2第二次乘法:x^4=x^2 * x^2第三次乘法:x^2 * (x^4+4x^2+2x)+x+1每一项系数用加法实现。 误区:x^2,x^4,x^3,x^6  每一项都通过乘法求出 2、给定3个int类型的正整数x,y,z,对如下...

weixin_33872660的博客 147

避坑指南:MTK平台Widevine L1密钥安装全流程详解(含SP META工具使用与Log分析)

本文详细解析了MTK平台实现Widevine L1认证的全流程,涵盖密钥申请、格式转换、安全烧录等关键步骤,特别针对Trustonic TEE环境下的SP META工具使用与日志分析提供实用指南。帮助开发者规避常见错误,确保DRM密钥安全部署,满足高端内容保护需求。

weixin_27219587的博客 475

稳定性性能系列之十五——系统稳定性监控体系建设:从指标到预警的完整方案

深入探讨Android系统稳定性监控体系的设计与实现,涵盖指标体系设计、数据采集方案、异常检测算法、预警响应机制,并提供完整的监控平台搭建实践。

Cheson的专栏 1357

求组合数的递归实现,即求C(n,m)

此法借鉴了2009年华为一笔试题我写的一个递归算法/**    功能:输出组合数C(n,m)*    日期:2011/7/28*    作者:milo*    不足:对于有多个重复数字,会输出重复的组合数,可以通过遍历一个数组链表解决。*/#include#includeint

Challenge_C_PlusPlus的专栏 1万+

矢量量化的基本原理:高效数据压缩与信息检索的关键矢量量化(Vector Quantization,简称VQ)是一种数据压缩和信

此外,在矢量量化过程中,可能会引入一定的信息损失,对一些精细特征的表示可能存在一定的误差。它通过将高维数据映射到低维码本空间中,并将相似的数据映射到相同的码本向量中,实现对数据的高效表示和存储。最重要的是,矢量量化可以用于数据的检索和分析,提供了高效的数据查询和处理手段。通过使用码本索引,我们可以高效地存储和检索大量的数据。在图像处理中,矢量量化可以用于图像压缩,将复杂的图像数据转化为较少的码字,实现图像的存储和传输。矢量量化通过将连续的高维数据分割并映射到有限的码本集合中,实现数据的离散表示和压缩。

m0_70886513的博客 1371

动态规划经典算法之矩阵连乘问题源代码

//Dynamic Programming经典算法之矩阵连乘链问题 //Author: milo //Email: 498638441@qq.com //Date: 2011/11/16 16:50 #include #include #include static int m[6][6];//m[i][j]存储子问题的最优解 static int s[6][6];//

Challenge_C_PlusPlus的专栏 9454

2.实体机安装TrueNAS 方法

访问不了可以使用以下连接:提取码:0927。

Unofficial_user的博客 7430

别再用Python卷了!用Matlab的Deep Learning Toolbox快速上手U-Net图像分割(附完整数据集处理代码)

本文介绍了如何使用Matlab的Deep Learning Toolbox快速上手U-Net图像分割,包括数据准备、网络构建、训练监控和模型应用等完整流程。Matlab的高度集成工具链和图形化界面为图像分割任务提供了更快捷、直观的解决方案,特别适合研究人员和工程师快速实现原型验证。

weixin_29927965的博客 381

dp算法之数塔问题

首先说明:以下数行注视来自这为兄台的博客,他写的详细,我就直接借用了:(代码是自己的) http://blog.youkuaiyun.com/ZhengZhiRen/article/details/4129081 /* 数塔问题: 9 12 15 10 6 8 2 18 9 5 19 7 10 4 16 有形如图所示的数塔,从顶部出发,在每一结点可以选择向左走或是向右走, 一直走到底层,要求找出一条路径,

Challenge_C_PlusPlus的专栏 5422

拯救者Y9000P 2022双系统实战:Ubuntu22.04分区优化与驱动避坑指南

本文提供联想拯救者Y9000P 2022款安装Ubuntu 22.04双系统的详细实战指南。重点讲解针对该机型的磁盘分区优化方案、NVIDIA显卡驱动安装避坑技巧,以及安装后的网络、时间同步等必备配置,帮助用户高效完成双系统部署并提升使用体验。

weixin_29208327的博客 422

动态规划算法之免费馅饼问题

其实就是一个类似于数塔的问题! 免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6987    Accepted Submission(s): 2247 Problem Description 都说天上不会掉馅

Challenge_C_PlusPlus的专栏 2913

一篇把 Transport 做到可复制的实战指南:从 CTS 底层表到 LSMW、Variant、Layout、TABU、Query、SAPscript 全对象搬运

本文深入解析SAP系统中的Transport机制,将其视为可审计、可追溯的变更流水线。文章从CTS/Transport Organizer通用方法论和具体对象搬运手法两个层面展开,详细介绍了LSMW项目、程序Variant、屏幕/ALV Layout、表数据、ABAP Query、SAPscript和SO10标准文本等对象的传输策略。通过真实案例说明,代码对象往往能被正确传输,但"运行体验"和"业务配置"却常被遗漏,导致QAS测试正常而PRD环境异常。文章提供了一套可

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 169

高通Camx功能feature分析之十:高通NCS服务之注册和启动

本文介绍了高通NCS(非相机传感器)服务的注册与启动流程。NCS通过QMI接口访问陀螺仪等传感器,为相机EIS/AEC等功能提供辅助数据。文章详细解析了服务注册时的QueryCapabilites能力查询、RegisterService注册流程,以及通过StartNCSService启动服务线程的过程。重点包括:1)AF/EIS等节点通过NCSService创建传感器对象;2)注册时需校验传感器类型和接口;3)首次注册成功后会启动NCS服务线程;4)采样率变化时需重新配置会话。通过线程池管理实现传感器数据的

1261

Rabin-Karp字符串匹配算法c源代码

/*Rabin-Karp字符串匹配算法*/ /*Author:Milo *Date:2011/12/22 */ #include #include #include #include /*参数说明 ********************* T:要查找的字符串 P:模式字符串 d:查找字符串的基数 q:一个素数 ********************* */ static void

Challenge_C_PlusPlus的专栏 2331

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

动态规划经典算法之装配站调度问题源代码

//Dynamic Programming经典算法之装配站调度问题 //Author: milo //Email: 498638441@qq.com //Date: 2011/11/16 13:47 #include #include static int a1[6]={7,9,3,4,8,4};//1号装配线的每个装配站装配时间 static int a2[6]={8,5

Challenge_C_PlusPlus的专栏 2299

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

N!打印1-N的所有排列源代码

================================================求排列数,第二版========================================================/**功能:求排列*作者:milo*版本:v2.0*时间:2011/7/28*/#include#includeint count=0;//排列数种类计数static void

Challenge_C_PlusPlus的专栏 2255

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

2009年华为软件研发一笔试题

/**    功能:输出一个数组中和为每个指定数的所有组合数*    日期:2011/7/28*    作者:milo*    不足:对于有多个重复数字,会输出重复的组合数,可以通过遍历一个数组链表解决。*/#include#includeint *dst_array,top=0

Challenge_C_PlusPlus的专栏 2192

约瑟夫环的实现

用循环链表实现的,思路很简单,只是要注意指针的修改,编程基础差的容易出错。 /*约瑟夫环 - 循环链表实现 Author : Milo.Wang Date : 2012/9/15 */ #include using namespace std; typedef struct Node{ int num; struct Node *next; } Node, *NodePtr; void

Challenge_C_PlusPlus的专栏 1793

最大公约数与最小公倍数源码

1. 最大公约数:#include #include #include static int gcd(int a,int b) { int m; if((m=a%b)==0) return b; return gcd(b,m); } int main(int argc,char *argv[]) { int a,b; while(scanf("%d%d"

Challenge_C_PlusPlus的专栏 979

kmp字符串匹配算法实现

/* *功能:实现kmp字符串匹配算法 *时间:2011/8/1 *作者:milo ********/ #include #include #include #define MAX_SIZE 1024 /*计算前缀函数pi[strlen(str_mode)]

Challenge_C_PlusPlus的专栏 902

左循环旋转一个串的5种方法

/*功能:将一个整型数组左循环旋转i个位置*/#include#include#define WAYS_FIR 1#define WAYS_SEC 2#define WAYS_THI 3#define WAYS_FOU 4#define WAYS_FIF 5static void

Challenge_C_PlusPlus的专栏 825
上一篇: 约瑟夫环的实现
下一篇: 9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路
执迷的信徒
博客等级 码龄16年 245粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值