【二叉搜索树】hdu 3791
2024-10-19 21:25:42
http://acm.hdu.edu.cn/showproblem.php?pid=3791
【注意】
是看树的形态是否一样,而不是中序遍历的结果
【Accepted】
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<queue> using namespace std;
const int maxn=(<<)+;
char str[];
int num1[maxn];
int num2[maxn];
int len1,len2;
int n;
void build1(){
for(int i=;i<len1;i++){
int cur=;
while(num1[cur]!=-){
if(str[i]-''>num1[cur]){
cur=(cur<<)+;
}else{
cur=cur<<;
}
}
num1[cur]=str[i]-'';
}
}
void build2(){
for(int i=;i<len2;i++){
int cur=;
while(num2[cur]!=-){
if(str[i]-''>num2[cur]){
cur=(cur<<)+;
}else{
cur=cur<<;
}
}
num2[cur]=str[i]-'';
}
}
bool flag;
int main(){
while(scanf("%d",&n)&&n){
memset(num1,-,sizeof(num1));
scanf("%s",str);
len1=strlen(str);
build1();
// for(int i=1;i<=len1;i++){
// cout<<num1[i]<<" ";
// }
// cout<<endl;
for(int i=;i<n;i++){
scanf("%s",str);
flag=true;
memset(num2,-,sizeof(num2));
len2=strlen(str);
if(len1!=len2){
puts("NO");
continue;
}
build2();
for(int j=;j<maxn;j++){
if(num1[j]!=num2[j]){
flag=false;
break;
}
}
if(flag) puts("YES");
else puts("NO");
}
}
return ;
}
最新文章
- (转载)(收藏)Awk学习详细文档
- Hasor-Core v0.0.4 &; Web v0.0.3 发布
- 【微信Java开发 --2】接入微信公众平台开发,配置自己的服务器,验证过程
- UITableViewCell左对齐的方法
- oracle 查看运行中sql
- CentOS下安装实时检测网络带宽的小工具bmon
- Ubuntu 查看/修改文件编码
- std::cout彩色输出
- Android中多线程下载列表的封装实现(含进度反馈)
- Ubuntu与Ubuntu系统之间的mount挂载
- poj 3258 River Hopscotch(二分搜索之最大化最小值)
- Linux-统一事件源
- Linux下使用sendmail发送邮件
- RDBMS 数据库补丁集补丁号码高速參考-文档 ID 1577380.1
- MySQL存储过程(转载)
- [置顶]
 一个demo学会css
- 利用Jsonp实现跨域请求,spring MVC+JQuery
- token 验证
- ubuntu和mac OS X下另一种使用QQ的方法
- VS2012 发布网站步骤