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;
}
}
上一篇: Java实现二分查找(递归与非递归)
下一篇: Java实现二分查找(递归和非递归)