zoj1167
2017-01-19 08:48
197 查看
题目大意:
如下图例子可以描述为:(11,LL) (7,LLL) (8,R)(5,) (4,L) (13,RL) (2,LLR) (1,RRR) (4,RR) ()
写一段程序层次输出这棵树,如果树不完整,输出”not complete”
解题思路:
无代码如下:
#include<iostream> #include<algorithm> #include<string> using namespace std; typedef struct { string num; string str; }node; node tree[300]; string temp; bool cmp(node x,node y) { if(x.str.length()==y.str.length()) return x.str<y.str; else return x.str.length()<y.str.length(); } int main() { int i,j,flag,ff,len; while(cin>>temp) { //string À಻¿ÉÒÔmemsetÇå0µÄ£¬²»È»ÒªREµÄ for(i=0;i<300;i++) { tree[i].num=""; tree[i].str=""; } i=1; while(temp[i]!=',') { tree[0].num+=temp[i]; i++;} i++; if(temp[i]==')') tree[0].str="A"; else { while(temp[i]!=')') { tree[0].str+=temp[i]; i++;} } j=1; while(cin>>temp) { if(temp=="()") break; i=1; while(temp[i]!=',') { tree[j].num+=temp[i]; i++;} i++; if(temp[i]==')') tree[j].str="A"; else { while(temp[i]!=')') { tree[j].str+=temp[i]; i++;} } j++; } len=j; sort(tree,tree+len,cmp); flag=0; if(tree[0].str!="A") flag=1; for(i=0;i<len;i++) { if(flag) break; if(i!=j-1 && tree[i].str==tree[i+1].str) {flag=1; break;} if(tree[i].str.length()>=2) { temp = tree[i].str.substr (0,tree[i].str.length()-1); //cout<<"temp= "<<temp<<endl; ff=0; for(j=0;j<i;j++) { if(temp==tree[j].str) { ff=1; break; } } if(ff==0) flag=1; } //cout<<tree[i].num<<" "<<tree[i].str<<endl; } if(flag) cout<<"not complete"<<endl; else { for(i=0;i<len-1;i++) cout<<tree[i].num<<" "; cout<<tree[i].num<<endl; } } return 0; }
相关文章推荐
- ZOJ-1167
- zoj 1167 Tree on the level
- zoj 2059
- hdu 4424 & zoj 3659 Conquer a New Region (并查集 + 贪心)
- [ZOJ 1003] Crashing Balloon (dfs搜索)
- zoj 3812 背包
- zoj 1622
- ZOJ 1542 Network
- ZOJ 1440 Bone Sort (置换+逆序数)
- ZOJ 2110 Tempter of the Bone
- ZOJ 1108 FatMouse's Speed 动态规划
- zoj 1179 Finding Rectangles
- ZOJ 2706 Thermal Death of the Universe(线段树区间更新)
- ZOJ 3492 F - Kagome Kagome
- zoj 3516 Tree of Three
- zoj 3195 Design the city LCA
- ZOJ 3430 Detect the Virus AC自动机
- ZOJ 1027
- ZOJ 3279 Ants
- hdu 1394 zoj 1484 求旋转序列的逆序数(并归排序)