点击查看题目
简单的二叉树,注意处理输入
代码如下:
#include <iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
const int maxn=130;
int s[maxn],a[maxn];
int main()
{
int n,m,kase=0;
while(cin>>n&&n!=0)
{
getchar();//吃掉回车
memset(s,0,sizeof(s));
string line;
getline(cin,line);//吃掉第二行输入,没用
for(int i=0;i<pow(2,n);i++)
scanf("%1d",&s[i]);//注意输入格式,一个一个读取
cin>>m;
int index=0;
for(int i=0;i<m;i++)
{
int l=1,x;
for(int j=0;j<n;j++)
{
scanf("%1d",&x);//注意输入格式,一个一个读取
l=2*l+x;//向左+0,向右+1
}
l=l-pow(2,n);
a[index++]=s[l];
}
cout<<"S-Tree #"<<++kase<<":"<<endl;
for(int i=0;i<m;i++)
cout<<a[i];
cout<<endl<<endl;
}
}