HUD 3791 二叉搜索树

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
char num[1024],s[1024],c[15];
int n;
while(scanf("%d",&n),n)
{
scanf("%s",c);
memset(num,0,sizeof(num));
int len=strlen(c);
num[1]=c[0];
for(int i=1;i<len;i++){
int j=1;
while( num[j] ){
if( num[j]>c[i] )
j=j*2;
else j=j*2+1;
}
num[j]=c[i];
}
for(int i=0;i<n;i++)
{
memset(s,0,sizeof(s));
scanf("%s",c);
int len1=strlen(c);
if(len1!=len||num[1]!=c[0])printf("NO\n");
else {
int flag=0;
s[1]=c[0];
for(int i=1;i<len1;i++)
{
int j=1;
while( s[j] )
{
if( s[j]>c[i] )
j=j*2;
else j=j*2+1;
}
s[j]=c[i];
if(s[j]!=num[j]){
flag=1;
break;
}
}
if(!flag)printf("YES\n");
else printf("NO\n");
}
}
}
return 0;
}

 

转载于:https://www.cnblogs.com/bo-tao/archive/2012/01/09/2317375.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值