思路描述:最开始的思路是拿一个栈来存储数据和符号,在动手实践的过程中发现行不通,单个数字的char和int转换可以,但是加起来的数据两位数字就很难处理了。

然后就去看了看别人的思路,给了我一个很好的启发就是把数据和符号分开存储,但是在处理减号时思路再次打乱,突然就想到了双端队列

整理后的思路如下:(可能思路和我卡在同一个地方的更容易看明白我在说啥,尽量想让博客写的更容易理解些,会努力加油的!)

贴下代码:

#include<iostream>
#include<cstring>#include<deque> using namespace std; deque<int> num;//数据队列
deque<char> sign;//符号队列 int main() {
int n;
cin >> n;
char c[10]; for (int i = 0; i < n; i++) {
cin >> c;
//每次开始前先将队列清空
while (!num.empty())num.pop_back();
while (!sign.empty())sign.pop_back();
//遍历输入的数据
for (int j = 0; j < 7; j++) {
//数字压入数据队列
if (c[j] >= '0'&&c[j] <= '9') num.push_back(c[j] - '0');
else {
//对符号进行处理
//如果是+,先压入符号队列
if (c[j] == '+' || c[j]=='-') sign.push_back(c[j]);else if (c[j] == 'x') {
//运算后将运算结果压入队列中
int temp = num.back();
num.pop_back();
num.push_back(temp * (c[j + 1] - '0'));
j++;
}
else if (c[j] == '/') {
int temp = num.back();
num.pop_back();
num.push_back(temp / (c[j + 1] - '0'));
j++;
}
}
}
//处理队列中剩余元素(进行加法运算)
while (!sign.empty()) {
int temp1 = num.front();
num.pop_front();
int temp2 = num.front();
num.pop_front();
if (sign.front() == '+')num.push_front(temp1 + temp2);
else num.push_front(temp1 - temp2);
sign.pop_front();
}
//判断数据队列中剩余的最后一个元素
if (num.front() == 24) printf("%s\n", "Yes");
else printf("%s\n", "No");
} system("pause");
return 0;
}

最新文章

  1. 工作单元模式(UnitOfWork)学习总结
  2. 浅谈设计模式--建造器模式(Builder Pattern)
  3. [ASP.NET] 使用 ASP.NET SignalR 添加实时 Web
  4. 进入IT企业必读的200个.NET面试题
  5. Java三大主流开源工作流引擎技术分析
  6. 解决TableView / ScrollView上的Menu问题(1滑出View区域还可点击2导致点击menu后View不能滑动)
  7. myeclipse2014新感悟
  8. C/C++默认浮点型
  9. UWP 页面间传递参数(常见类型string、int以及自定义类型)
  10. Lintcode391 Number of Airplanes in the Sky solution 题解
  11. UNIX环境高级编程——信号
  12. win10 uwp 读取resw资源文件
  13. Android:android studio快捷键大全
  14. 【Django】关于设置和获取cookies
  15. 查看SQL语句的真实执行计划
  16. 一个整型数组里除了一个数字之外,其他的数字都出现了两次。要求时间复杂度是O(n),空间复杂度是O(1),如何找出数组中只出现一次的数字
  17. iOS 批量打包
  18. OpenCV中HSV颜色模型及颜色分量范围
  19. bat批处理(二):%0 %1——给批处理脚本传递参数
  20. IP共享重新验证

热门文章

  1. MySQL — DML语言
  2. netty搭建rpc框架
  3. 手写 Vue2 系列 之 patch —— diff
  4. CPU是海王?聊聊 主/子线程 和 同/异步 的关系
  5. Docker容器入门介绍
  6. luoguP6624 [省选联考 2020 A 卷] 作业题(莫比乌斯反演,矩阵树定理)
  7. Lua协程的一个例子
  8. 生产出现oom问题,怎么排查?
  9. CentOS7安装redis5
  10. python 迭代器和生成器基础知识