腾讯笔试,大题讨论下

大题只会两个。
分享下,仅供参考,不保证正确性。。

满排序二叉树:
#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;
}

逆序数:



其他两题不会,求大佬们讲解下
全部评论
用三个变量记录当前位前面DCB出现的次数,只要扫一边就行了吧
点赞 回复 分享
发布于 2017-04-03 21:22
最后一个,输出的第一个八位是16,32...的16进制,接下来的都是字符对应的16进制。
点赞 回复 分享
发布于 2017-04-03 21:16
最后一题用二分法求出每个节点的路径,然后一起从头扫描,找到最后一个相同节点,就是所求
点赞 回复 分享
发布于 2017-04-03 21:28
逆序对的倒着处理就不用扫描两次
点赞 回复 分享
发布于 2017-04-03 21:07
没想到,用的归并。。。。,最后一个编程没看懂什么意思
点赞 回复 分享
发布于 2017-04-03 21:14
满排序二叉树,不保证一定对。。
点赞 回复 分享
发布于 2017-04-03 21:32
楼主满排序二叉树的思路是什么?
点赞 回复 分享
发布于 2017-04-03 21:39
第一个编程题好简单,亏我想了好久
点赞 回复 分享
发布于 2017-04-03 22:20
逆序数可以用动态规划:
点赞 回复 分享
发布于 2017-04-04 01:08

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务