zoukankan      html  css  js  c++  java
  • 【习题 6-2 UVA

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

    在这里输入题意

    【题解】

    dfs模拟一下就好。 先预处理一个dfs. 搞出来x叶子节点它的值是什么

    【代码】

    /*
      	1.Shoud it use long long ?
      	2.Have you ever test several sample(at least therr) yourself?
      	3.Can you promise that the solution is right? At least,the main ideal
      	4.use the puts("") or putchar() or printf and such things?
      	5.init the used array or any value?
      	6.use error MAX_VALUE?
    */
    #include <bits/stdc++.h>
    using namespace std;
    
    const int N = 10;
    
    int n,Q;//depth
    int de[N]; 
    int val[N],key[1024],now;
    string KEY;
    	
    void dfs1(int x,int dep){
    	if (dep>n){
    	 	key[x] = KEY[now++] - '0';
    	 	return;
    	}
    	dfs1(x*2,dep+1);
    	dfs1(x*2+1,dep+1);
    }
    
    int dfs2(int x,int dep){
     	if (dep > n){
    		return key[x];
     	}
     	if (val[de[dep]]==0){
     	 	return dfs2(x*2,dep+1);
     	}else {
     	 	return dfs2(x*2+1,dep+1);
     	}
    }
    
    int main(){
    	#ifdef LOCAL_DEFINE
    	    freopen("F:\c++source\rush_in.txt", "r", stdin);
    	#endif
    	ios::sync_with_stdio(0),cin.tie(0);
    	int Kase = 0;
    	while (cin>> n && n){
    	    cout << "S-Tree #" << ++Kase <<':'<<endl;
    		now = 0;
    		for (int i = 1;i <= n;i++){
    	 		string temp;
    	 		cin >> temp;
    	 		de[i] = temp[1]-'0';	
    	 	}
    	 	cin >> KEY;
    
    	 	dfs1(1,1);
    
    	 	cin >> Q;
    	 	for (int i = 1;i <= Q;i++){
    	 	 	string temp;
    	 	 	cin >> temp;
    	 	 	for (int j = 0;j < n;j++)
    	 	 		val[j+1] = temp[j] - '0';
    	 	 	cout << char(dfs2(1,1) + '0');
    	 	}
    	 	cout << endl;
    	 	cout << endl;
    	}
    
    	return 0;
    }
    
  • 相关阅读:
    redis的安装使用
    重大需求分析开发第一天
    学习进度条-第六周
    学习进度条-第五周
    软件工程个人课程总结
    学习进度条-第十六周
    团队冲刺第二阶段第十天
    团队冲刺第二阶段第十一天
    响当当队-Beta版总结会议
    学习进度条-第十五周
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7860208.html
Copyright © 2011-2022 走看看