第一题
const int N = 100;
int L[N],R[N],T[N];
void generateT(){
for(int i=1;i<=N;i++){
T[L[i]]=T[R[i]]=i;
}
}
bool check(int i,int j){
return T[i]==j or T[j]==i;
}
第三题
void putN(int n) {
K[N-1]=n;
swap(K[1], K[N-1]);
int ind = 2;
while (ind <= N) {
if (K[(ind - 2) / 2+1] < K[ind]) {
swap(K[(ind - 2) / 2+1], K[ind]);
ind = (ind - 1) * 2 + 2;
continue;
}
if (++ind > N)
break;
if (K[(ind - 2) / 2] < K[ind]) {
swap(K[(ind - 2) / 2], K[ind]);
ind = (ind - 1) * 2 + 2;
continue;
}
break;
}
}
得到编码:
A 0100
B 0101
C 011
D 10
E 11
F 00