标签:include 开始 highlight false continue pos tin iostream als
如果序列相同则输出YES,否则输出NO
2 567432 543267 576342 0
YES NO
这题我的思路是将序列转换成用数组表示的二叉树,然后比较两个数组是否相同即可。
源代码:
#include <iostream>
#include <cstring>
using namespace std;
const int N = 10000;
int sTree[N];
int dTree[N];
void string2Tree(char *s, int *tree);
void insert(char c, int *tree);
bool isSameTree();
int main(){
int n;
while(cin>>n && n){
memset(sTree, -1, sizeof(sTree));
char s[1000], d[1000];
cin >> s;
string2Tree(s, sTree);
for(int i=0; i<n; i++){
cin >> d;
if(strlen(s) != strlen(d)){
cout << "NO" << endl;
continue;
}
memset(dTree, -1, sizeof(dTree));
string2Tree(d, dTree);
if(isSameTree()) cout << "YES" << endl;
else cout << "NO" << endl;
}
}
return 0;
}
void string2Tree(char *s, int *tree){
int len = strlen(s);
tree[1] = s[0] - ‘0‘;
for(int i=1; i<len; i++){
insert(s[i], tree);
}
}
void insert(char c, int *tree){
int curPos = 1;
int curChar = c - ‘0‘;
while(tree[curPos] != -1){
if(tree[curPos] < curChar){
curPos = 2 * curPos + 1;
}
else{
curPos = 2 * curPos;
}
}
tree[curPos] = curChar;
}
bool isSameTree(){
for(int i=1; i<N; i++){
if(sTree[i] != dTree[i]) return false;
}
return true;
}
标签:include 开始 highlight false continue pos tin iostream als
原文地址:http://www.cnblogs.com/chaos---/p/6528548.html