#include<iostream>
#include<iomanip>
#include<algorithm>
#include<cstring>
#include<vector>
#include<cstdio>
#include<stack>
#include<math.h>
using namespace std;
string s1,s2;
int vv[1000];
int c[1000];
int n;
int num=0;
void find()
{
int sum=0,count=0;
int i;
for(i=n-1;i>=0;i--)
{
sum+=(s2[vv[count++]-1]-'0')*pow(2,i);//找规律,要输出的数的位置就是实际命令的二进制
}
c[num]=s1[sum]-'0';//存数
}//找到树底对应位置的数。
int main()
{
int k=0;
while(cin>>n&&n)
{
string t;
int i;
for(i=0;i<n;i++)
{
cin>>t;//x1,x2,x3是有用的他是每一个命令的顺序,例:x2,x1,x3 011,实际命令101
vv[i]=t[1]-'0';//命令的顺序
}
int n1;
cin>>s1;
cin>>n1;
while(n1--)
{
cin>>s2;
find();
num++;
}
cout<<"S-Tree #"<<++k<<":"<<endl;
for(i=0;i<num;i++)
{
cout<<c[i];
}
num=0;//全局变量,注意最后用完为了下一波清空
cout<<endl<<endl;
}
return 0;
}
/*3
x1 x2 x3
00000111
4
000
010
111
110*/
/*
0011*/
03-31
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交