题意
如题
思路
为每一行建立一个二叉排序树,进行对比
代码
#include<iostream>
#include <string.h>
using namespace std;
int tree1[10000];
int tree2[10000];
void insert(char node,int tree[]){
int step=1;int nodedata=node-'0';
while(tree[step]!=-1){
if(tree[step]<nodedata)
step=step*2+1;
else
step=step*2;
}
tree[step]=nodedata;
}
void build(char str[],int tree[]){
int length=strlen(str);
tree[1]=str[0]-'0';
for(int i=1;i<length;i++){
insert(str[i],tree);
}
}
int main(){
int n;
while(cin>>n&&n!=0){
memset(tree1,-1,sizeof(tree1));
char str[10];
cin>>str;
build(str,tree1);
while(n--){
memset(tree2,-1,sizeof(tree2));
cin>>str;
build(str,tree2);
int flag=0;
for(int i=0;i<10000;i++){
if(tree1[i]!=tree2[i])
flag=1;
}
if(flag==0)cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}
return 0;
}