您的位置:首页 > 其它

二叉搜索树HDU 3791

2016-09-28 15:07 204 查看
http://acm.split.hdu.edu.cn/showproblem.php?pid=3791

#include <stdio.h>
#include <algorithm>
#include <iostream>
#define maxs 5010
#include <string.h>
#define MME(i,j) memset(i,j,sizeof(i))
using namespace std;
int tree1[10010];
int tree2[10010];
char str[maxs];

void Insert(int son,int *tre)
{
int now=1;
while(tre[now]!=-1)
{
if(tre[now]<son)
now=2*now+1;//右孩子
else now*=2;
}
tre[now]=son;
}

void build(char *s,int *tr)
{
int len=strlen(s);
tr[1] = s[0]-'0';
for( int i=1;i<len;i++ )
{
Insert( s[i]-'0',tr );
}
}

int main()
{
int n;
bool flag;
while(~scanf("%d",&n)&& n)
{
flag=1;
MME(tree1,-1);
//MME(tree2,-1);
scanf("%s",str);
build(str,tree1);
for(int i=0;i<n;i++)
{
flag=1;
MME(tree2,-1);
scanf("%s",str);
build(str,tree2);
for(int ii=0;ii<5000;ii++)
{
if(tree1[ii]!=tree2[ii])
{
flag=0;
break;
}
}
if(flag)
puts("YES");
else puts("NO");
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: