数据结构 + BFS uva 11234 - Expressions
来源:互联网 发布:网络教育什么专业好 编辑:程序博客网 时间:2024/05/17 00:50
题目链接:
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2175
题目意思:
给一串字符,小写字母表示操作数,大写字母表示操作符,求一个字符串使该字符串用队列的方式的运行方式的结果与给出串用栈运行的结果一样。
解题思路:
依据栈的结构构造一棵树,所求的序列实际上就是这棵树的按层次逆序输出。
代码:
#include<iostream>#include<cmath>#include<cstdio>#include<cstdlib>#include<string>#include<cstring>#include<algorithm>#include<vector>#include<stack>#include<queue>#include<map>#define eps 1e-6#define INF (1<<20)#define PI acos(-1.0)#define Max 11000using namespace std;struct Node{ int father,left,right;};struct Node tree[Max]; //依据栈的结构构造一颗树char ans[Max];char save[Max];int main(){ int ca; scanf("%d",&ca); while(ca--) { scanf("%s",save); int n=strlen(save); memset(tree,-1,Max*sizeof(struct Node)); stack <int> mystack; for(int i=0;i<n;i++) { if(save[i]>='a'&&save[i]<='z') mystack.push(i); else { int templeft,tempright; tempright=mystack.top(); //注意显示right,后是left mystack.pop(); templeft=mystack.top(); mystack.pop(); tree[i].left=templeft; tree[i].right=tempright; tree[templeft].father=tree[tempright].father=i; mystack.push(i); } } int root; for(int i=0;i<n;i++) //找到树根 { if(tree[i].father==-1) { root=i; break; } } queue<int>myqueue; //先BFS遍历一遍,按顺序保存,然后输出 int len=0; myqueue.push(root); while(!myqueue.empty()) { int cur=myqueue.front(); myqueue.pop(); ans[len++]=save[cur]; if(tree[cur].left!=-1) //判断否有左孩子 myqueue.push(tree[cur].left); if(tree[cur].right!=-1) //判断是否有右孩子 myqueue.push(tree[cur].right); } for(int i=len-1;i>=0;i--) //逆序输出 putchar(ans[i]); putchar('\n'); } return 0;}
- 数据结构 + BFS uva 11234 - Expressions
- Uva 11234 - Expressions//数据结构,二叉树
- uva 11234 Expressions 表达式 建树+BFS层次遍历
- UVA 11234 - Expressions 二叉树建树+BFS 层次遍历
- UVA 11234 Expressions(数据结构,二叉树,栈,队列)
- UVa 11234 Expressions
- uva 11234 - Expressions
- UVa 11234 Expressions
- uva 11234 - Expressions
- UVa 11234 - Expressions
- UVA 11234 - Expressions
- UVa 11234 - Expressions
- UVA 11234 - Expressions
- uva 11234 - Expressions
- UVA 11234 - Expressions
- uva-11234 Expressions
- UVA 11234 Expressions
- UVa 11234 - Expressions
- linux 下安装protobuf-c
- repo准备和代码下载
- linux下IPTABLES配置详解
- iOS电话面试题库
- PKU 3233 经典矩阵乘法
- 数据结构 + BFS uva 11234 - Expressions
- mahout SparseVectorsFromSequenceFiles详解(1)
- Android敏捷开发指南(转)
- Oracle自动分区
- XlFileFormat Enumeration (Excel)
- C#父子窗体
- 手机开发面试经历
- pointer和reference的比较
- cocos2d-x Demo-实现画笔功能