欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

UVa 712 S树(S-Trees)

程序员文章站 2022-03-14 20:36:45
...

给出一棵满二叉树,每一层代表一个0,1变量,取0往左走,取1往右走。
给出所有的叶子的值和一些查询,及每个变量的x的取值,求每个查询到达的叶子的值。

要点:

  • 根据权重,得到所有叶子的值即可。
#include<bits/stdc++.h>
using namespace std;

int main() {
	//freopen("in.txt", "r", stdin);
	//freopen("out.txt", "w", stdout);
	int T;

	int kase = 0;
	while (cin >> T && T) {
		cout << "S-Tree #" << ++kase << ":" << endl;
		cin.get();
		string s;
		getline(cin, s);
		stringstream ss(s);
		int cnt = 0;
		char ch;
		int x;
		int weight[10];
		while (ss >> ch >> x) {
			//cout << ch << " " << x << endl;
			cnt++;
			weight[x] = cnt;

		}
		string index;
		cin >> index;
		int n;
		cin >> n;
		while (n--) {
			string sss;
			cin >> sss;
			int ans = 0;
			for (int i = 0; i < sss.size(); i++) {
				ans += sss[i] == '0' ? 0 : pow(2, (cnt - weight[i+1]));
			}
			cout << index[ans];
		}
		cout << endl;
		cout << endl;
	}
}