腾讯笔试,大题讨论下
大题只会两个。
分享下,仅供参考,不保证正确性。。
满排序二叉树:
#include<cstdio>
#include<cmath>
using namespace std;
int judge(int r,int a,int b,int c){
if(a >= r && b >= r && c >= r)
return 1;
if(a <= r && b <= r && c <= r)
return -1;
return 0;
}
int main()
{
int k,a,b,c;
scanf("%d%d%d%d",&k,&a,&b,&c);
int root = pow(2,k-1);
int flag ;
int ans = -1;
while((flag=judge(root,a,b,c)) != 0){
k--;
if(flag == 1){ //往右走
if(a==root || b==root || c==root){
ans = root;
break;
}
root += pow(2,k-1);
}
else { //往左走
if(a==root || b==root || c==root){
ans = root;
break;
}
root -= pow(2,k-1);
}
}
if(flag == 0) ans = root;
printf("%d\n",root);
return 0;
}
逆序数:
其他两题不会,求大佬们讲解下