博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA11234 Expressions
阅读量:6371 次
发布时间:2019-06-23

本文共 1340 字,大约阅读时间需要 4 分钟。

题目的意思实在是读不懂,又是把栈变成队列什么的。。

只是大体的意思就是把后缀表达式变一下。。

抛开意思,事实上就是依据输入建个树,然后倒序输出。。

拿第一个例子说明;大写代表操作符(+ - × /之类的)小写代表数字。

xyPzwIM:就是指 (xPy) M (zIw) 就像是两数相乘1 × 2写成 12×;

变成树的样子就是

     M

    / |

   P   I

  / |  / |

 x  y z  w

然后把这棵数倒着输出 wzyxIPM。

建树时就是碰到小写,就建个小树。左子树右子数都是空,压入栈。

碰到大写,也要建个小树,并把栈顶两个元素取出来,作为做子树和右子树。。在把新树压入栈

建完后栈顶就是这个树的根,採用广搜遍历即可。

AC代码:

#include
#include
#include
#include
#include
using namespace std;const int N = 100010;struct node{ char value; node *left,*right;};int main () { int T; stack
sta; queue
que; cin >> T; while (T--) { string str; cin >> str; for (int i = 0 ; i < str.size() ;i++) { if (str[i] >='a' && str[i] <='z') { node* u =(node*)malloc(sizeof(node)); u -> value = str[i]; u -> left = u -> right = NULL; sta.push(u); } if (str[i] >= 'A' && str[i] <= 'Z') { node* u = (node*)malloc(sizeof(node)); u -> value = str[i]; u -> right = sta.top(); sta.pop(); u -> left = sta.top(); sta.pop(); sta.push(u); } } node* u = sta.top(); que.push(u); int n = 0; char res[N]; while (!que.empty()) { u = que.front(); if(u -> left != NULL) que.push(u -> left); if(u -> right != NULL) que.push(u -> right); res[n++] = u -> value; que.pop(); } for (int i = n - 1 ;i >= 0 ;i--) cout << res[i] ; cout << endl; while (!sta.empty()) sta.pop(); } return 0;}

转载地址:http://sauqa.baihongyu.com/

你可能感兴趣的文章
项目软件集成三方模块,编译中int32和uint32定义冲突解决方法
查看>>
StretchDIBits速度测试(HALFTONE)
查看>>
在.NET Workflo“.NET研究”w 3.5中使用多线程提高工作流性能
查看>>
验证Oracle处理速度
查看>>
自己写一个jquery
查看>>
艾伟:C#中抽象类和接口的区别
查看>>
Flink - NetworkEnvironment
查看>>
BZOJ4374 : Little Elephant and Boxes
查看>>
【.Net Framework 体积大?】不安装.net framework 也能运行!?开篇叙述-1
查看>>
LLDP协议、STP协议 笔记
查看>>
如何使用 GroupBy 计数-Count()
查看>>
jquery之clone()方法详解
查看>>
Delphi 用文件流读取文本文件字符串的方法
查看>>
php中怎么导入自己写的类
查看>>
C# 委托
查看>>
Using Information Fragments to Answer the Questions Developers Ask
查看>>
JVM学习(4)——全面总结Java的GC算法和回收机制---转载自http://www.cnblogs.com/kubixuesheng/p/5208647.html...
查看>>
getParameter和getAttribute的区别
查看>>
自动工作负载库理论与操作(Automatic Workload Repository,AWR)
查看>>
Redis两种方式实现限流
查看>>