北理工2011年计算机复试上机题(三)
来源:互联网 发布:淘宝其他来源是什么 编辑:程序博客网 时间:2024/04/28 01:36
题目说明:
给一个字符串(aaaa(bbb(cccc,dddd),eeee(ffff))),该字符串表明的是各个人的层次关系。
如aaaa是bbb和eeee的领导,bbb是cccc和dddd的领导。等等 现要求你输入一个名称如ffff要求你输出其的领导关系 那么就应输出aaaa>eeee>ffff
解题思路:
这题很显然用二叉树来做,但由于本人对树感冒,所以想省事用数组来做,结果证明用数组做虽然代码少但是要注意的地方较多。因为需要判断结点的父子关系,并且要记录父亲位置,需要根据括号出现的情况不断判断,输出的时候仍然需要逆序
代码:
#include <iostream>#include<string>#include<vector>#include<algorithm>#include <cstring>using namespace std;int main(){string s;int i,k,p,j,m;int temp;char a[1000][10]; //存放结点int b[1000]; //记录某结点父节点位置char upset[10];char answer[1000][10];cin>>s;k=0;p=0;temp=-1;for(i=1;i<s.size();i++){if(s[i]=='('){a[k][p]='\0';b[k]=temp;temp=k;k++;p=0;}else if(s[i]==')'){a[k][p]='\0';b[k]=temp;temp=b[b[k]];//只有在不连续两个“)”时才加K,否则存放的只是空值if(s[i-1]!=')'){k++;}p=0;}else if(s[i]==','){a[k][p]='\0';b[k]=temp;//只有在不连续出现“),”时才加K,否则存放的只是空值if(s[i-1]!=')'){k++;}p=0;}else{a[k][p++]=s[i];}}cout<<"请输入查找字符串:"<<endl;while(cin>>upset){m=0;for(i=0;i<k;i++){if(strcmp(a[i],upset)==0){j=i;strcpy(answer[m++],upset);while(b[j]!=-1){j=b[j];strcpy(answer[m++],a[j]);}}}for(i=m-1;i>0;i--){cout<<answer[i]<<">";}cout<<answer[0]<<endl;}system("pause");return 0;}
说明:
这么美好的早上就浪费在这题上了,得不偿失啊,不会用树的后果。
- 北理工2011年计算机复试上机题(三)
- 北理工2011年计算机复试上机题(一)
- 北理工2011年计算机复试上机题(二)
- 北理工2012年计算机研究生复试上机题
- 2012年北理工计算机学院保研C++上机复试题(一)
- 2011年北航计算机复试上机题
- 2011年北航计算机复试上机题及代码
- 2011年北航计算机复试上机题代码
- 【北理工研究生复试上机题】完数和盈数
- 【北理工研究生复试上机题】邮票面额问题
- 【北理工复试上机题】创建类判断是否是直角三角形
- 北航计算机复试上机题(2008)
- 北航计算机复试上机题(2009)
- 浙江大学计算机学院2007年考研复试上机题
- 北京理工大学计算机专业研究生复试上机试题(2000-2011)
- 2009西电计算机研究生复试上机题(2)
- 2009年西电计算机研究生复试上机题(3)
- 2009年西电计算机研究生复试上机题(4)
- PowerDesigner备忘录 .
- Ext.get() 和 Ext.query() 组合使用 实现 最灵活的取元素方式
- 命令行CURL教程
- Encoding filter for Java web applications
- case语句
- 北理工2011年计算机复试上机题(三)
- struts1.2x异常处理
- 男人可以不帅,但一定要像个男人
- 存储过程创建语法
- Delphi组件编辑器
- 通过ADO控件访问数据库示例
- WCE下创建MFC的COM对象及使用方法(一)
- 脚本安全的本质 PHP篇
- Android JNI实现Java与C的数据传递