zoukankan      html  css  js  c++  java
  • 【例题 6-7 UVA

    【链接】 我是链接,点我呀:)
    【题意】

    在这里输入题意

    【题解】

    二叉树的话,直接用数组存就好了。 写个bfs记录一下答案。

    【代码】

    #include <bits/stdc++.h>
    using namespace std;
    
    const int N = 300;
    
    string s;
    int g[N+10][3],cnt;
    vector <int> ans;
    
    bool bfs(){
    	queue <int> dl;
    	dl.push(0);
    
    	while (!dl.empty()){
    		int x = dl.front();
    		dl.pop();
    		if (!g[x][2]) 	return false;
    		ans.push_back(g[x][2]);
    		for (int i = 0;i < 2;i++)
    			if (g[x][i])
    				dl.push(g[x][i]);
    	}
    	return true;
    }
    
    int main(){
    //	freopen("rush.txt","r",stdin);
    	while (cin >> s){
    		ans.clear();
    		memset(g,0,sizeof g);
    	    cnt = 0;
    		bool ok = true;
    		while (!(s[0]=='(' && s[1]==')')){
    			int len = s.size();
    			bool root = false;
    			for (int i = 0;i < len;i++)
    				if (s[i]=='(' || s[i]==')' || s[i]==',') {
    					if (s[i]==',' && i+1<len && s[i+1]==')') root = true;
    					s[i]=' ';
    				}
    		    stringstream ss(s);
    			int x;
    			ss >> x >> s;
    			if (root) s = "";
    			int now = 0;
    			for (int i = 0;i < (int) s.size();i++){
     				if (s[i]=='L'){
     					if (!g[now][0]) g[now][0] = ++cnt;
     					now = g[now][0];
    				}else{
    					if (!g[now][1]) g[now][1] = ++cnt;
    					now = g[now][1];		
    				}
    			} 
    			if (g[now][2]==0)
    				g[now][2] = x;
    			else{
    				ok = false;
    			}
    			cin >> s;
    		}
    		if (!ok || !bfs()){
    			puts("not complete");
    		}else{
    			for (int i = 0;i < (int) ans.size();i++){
    				printf("%d",ans[i]);
    				if (i==(int)ans.size()-1){
    					puts("");
    				}else putchar(' ');
    			}
    		}
    	}	
    	return 0;
    }
    
  • 相关阅读:
    496. 下一个更大元素 I 力扣(简单) 单调栈
    240. 搜索二维矩阵 II 力扣(中等) Z字型查找
    638. 大礼包 力扣(中等) 记忆化搜索,弱点
    453. 最小操作次数使数组元素相等 力扣(简单) 没想出来
    传纸条
    同余方程
    花匠
    华容道
    货车运输
    火柴排队
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7701253.html
Copyright © 2011-2022 走看看