用二进制模拟
#include<iostream>
#include<string>
#include<math.h>
using namespace std;
int main(){
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
int n;
int count=0;
while(cin>>n && n){
string s[8];
string ch;
int data[100];
for(int i=0;i<n;i++){
cin>>s[i];
}
cin>>ch;
for(int j=0;j<(int)pow(2.0,n);j++){
//ch[j]=cin.get();
//ch[j]=getchar();
data[j]=(int)ch[j]-48;
// cout<<ch[j]<<"?"<<endl;
// cout<<data[j]<<"!"<<endl;
}
int op;
cin>>op;
// string opch[100][100];
int option[100][100];
int result[100];
for(int k=0;k<op;k++){
int t = 0;
string opch;
cin>>opch;
for(int m=0;m<n;m++){
//opch[k][m]=cin.get();
option[k][m]=(int)opch[m]-48;
t+= (int)pow(2.0,n-1-m)*option[k][m];
// cout<<t<<endl;
}
result[k]=data[t];
}
cout << "S-Tree #" << ++count << ":\n";
for(int p=0;p<op;p++){
cout << result[p];
}
cout << endl;
cout << endl;
}
return 0;
}