712:S-Trees

S-Trees

#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");
    }
}

 

posted @ 2018-08-09 22:11  ACLJW  阅读(80)  评论(0编辑  收藏  举报