题目很简单,利用了数组实现完全二叉树(其实只是借用了这个概念)。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <string>
using namespace std;
const int n_size = 7 + 3;
const int size = 1024;
char s[size];
int u[n_size];
int v[n_size];
int main()
{
int n;
int cnt = 1;
while(cin >> n && n)
{
string str;
for(int i = 0 ; i < n ; ++i)
{
cin >> str;
u[str[1] - '1'] = i;
}
cin >> s;
int m;
cin >> m;
cout << "S-Tree #" << cnt++ << ":" << endl;
for(int i = 0 ; i < m ; ++i)
{
cin >> str;
for(int j = 0 ; j < n ; ++j)
v[j] = str[j] - '0';
int cur = 1;
for(int j = 0 ; j < n ; ++j)
{
if(v[j]) cur = 2 * cur + 1;
else cur *= 2;
}
cout << s[cur - (1 << n)];
}
cout << endl << endl;
}
return 0;
}