http://acm.hdu.edu.cn/showproblem.php?pid=3791
水,用数组实现的,但是交了好几次,写的草鸡没感觉!!!!!!第二个树的题目
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
int i,t;
char st[23];
int tree[1124],cmptree[1124];
while(scanf("%d",&t),t!=0){
scanf("%s",st);
memset(tree,-1,sizeof(tree));
for(i=0;i<strlen(st);i++)
{
int j=1;
while(tree[j]!=-1)
{
if((st[i]-'0')<=tree[j])j=j*2;
else j=j*2+1;
}
tree[j]=st[i]-'0';
}
while(t--)
{
memset(cmptree,-1,sizeof(cmptree));
scanf("%s",st);
for(i=0;i<strlen(st);i++)
{
int j=1;
while(cmptree[j]!=-1)
{
if((st[i]-'0')<=cmptree[j])j=j*2;
else j=j*2+1;
}
cmptree[j]=st[i]-'0';
}
bool flat=true;
for(i=1;i<=1024;i++)
{
if(tree[i]!=cmptree[i])
flat=false;
}
if(flat)
printf("YES\n");
else printf("NO\n");
}
}
return 0;
}