版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37754288/article/details/81545139
#include<bits/stdc++.h>
using namespace std;
const int maxn = 7;
int n,m,t,cnt = 0;
char s[2];
int a[maxn];
char b[maxn];
char leaf[int(pow(2,maxn))];
char simu()
{
int i = 0,j = t;
for(int k = 0;k < n;k++){
if(b[a[k]] == '0') j = (i+j) / 2;
else i = (i+j) / 2;
}
return leaf[i];
}
int main(){
// freopen("data.in","r",stdin);
// freopen("data.out","w",stdout);
while(scanf("%d",&n) && n){
for(int i = 0;i < n;i++){
scanf("%s",s);
a[i] = s[1] - '1';
}
t = int(pow(2,n));
scanf("%s",leaf);
scanf("%d",&m);
printf("S-Tree #%d:\n",++cnt);
for(int i = 0;i < m;i++){
scanf("%s",b);
printf("%c",simu());
}
printf("\n\n");
}
}