题目链接:https://www.nowcoder.com/test/11647121/summary
题目难度:较低,如果不是第一题题目有问题看了很久的话,小编应该是20分钟就做完了。
选择题:
1.已知一棵二叉树的前序遍历是ABCDEFGH,那么它的中序遍历一定不可能是:
A. CBEDAGFH
B. BADCFEHG
C. DCEBFAHG
D. CBDAFEHG
无答案
没错,第一题题目应该错了……四个答案都是对的。还是言归正传说一下题目的考察点,二叉树的三种遍历,前序遍历的顺序为根左右,中序遍历的顺序为左根右,将答案和题目进行对比,每次通过前序遍历找到当前的树的根节点,再通过中序遍历来找到哪些是左子树哪些是右子树。
2.10000个人背上依次贴着从1到10000的编号,他们从小到大依次报数,偶数出列,一圈后,从剩下的5000人再次从号码小的开始报数,偶数出列,直到没人出列为止。问最后一次出列的人,背上的编号是多少?
A. 1
B. 2049
C. 4097
D. 8193
答案:D
注意看题,题目是问最后一次出列的人,不是最后一个人,这题是小编唯一错的题,因为想着1怎么都不会出列,所以一定是站在最后的,所以想都没想就选了A……言归正传,仔细分析,首先,每一次出局都会少一半的人,那么最后一轮一定是只剩下两个数序号为1 2 ,此时序号为2的出局,它就是最后一个,我们要求的就是它的编号。每一轮之后,剩下的人的的序号相当于除以2再加1,再分析,那么第i轮淘汰的第一个数,也就是第i轮序号为2的编号就是2^(i-1) + 1,所以我们只需要求出这个i即可,10000最多能除以2 14次,所以i就等于14,答案为8193
填空题:
3.
阅读下面那段代码,给出handle(1024,256)的返回值
答案:1280
这道题就是考察我们对位运算的熟悉程度,此题出现的位运算为^异或运算、&位与运算、<<左移运算。那么我们来计算:
第一轮: a = 1024 , b = 256 , i = 1280, j = 0
此时你会发现,第一轮结束的时候,b已经为0了,所以答案就是a也就是第一轮的i,1280.
4.
下面有段数字处理函数的伪代码,阅读后,请给出handle(12354)的返回值 1
答案:45321
题目的函数一看就是将这个数进行倒序输出,看不懂的自己跟着模拟一遍就懂了。
编程题:
5.一封奇怪的信:
题目描述:
现在你需要用一台奇怪的打字机书写一封书信。信的每行只能容纳宽度为100的字符,也就是说如果写下某个字符会导致行宽超过100,那么就要另起一行书写
信的内容由a-z的26个小写字母构成,而每个字母的宽度均会事先约定。例如字符宽度约定为[1,2,3,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],那么就代表'a'到'd'四个字母的宽度分别是1,2,3,4,而'e'到'z'的宽度均为5
那么按照上述规则将给定内容S书写成一封信后,这封信共有几行?最后一行宽度是多少?
解题思路分析:
这题题意很简单,我们只需要将过程模拟一遍即可,如果当前行不够了,则将当前字母放到下一行。
代码:
#include
#include
#include
#include
using namespace std;
const int maxn = 1000+5;
char str[maxn];
int main() {
int num[30];
for(int i=0; i<26; i++) {
cin >> num[i];
}
cin >> str;
int n = 0, len = 0;
for(int i=0; i 100) {
n++;
len = tot;
}
else {
len += tot;
}
}
cout << n + 1 << " " << len << endl;
return 0;
}
6.糖果谜题:
小明是幼儿园的一名老师。某天幼儿园园长给小朋友们每人发一颗糖果,小朋友们拿到后发现有一些同学拿到的糖果颜色和自己相同,有一些同学糖果颜色和自己不同。
假定每个小朋友只知道有多少同学和自己拿到了相同颜色的糖果。
上课后,有一部分小朋友兴奋的把这一结果告诉小明老师,并让小明老师猜一猜,最少有多少同学拿到了糖果。
例如有三个小朋友告诉小明老师这一结果如下:
其中第一个小朋友发现有1人和自己糖果颜色一样,第二个小朋友也发现有1人和自己糖果颜色一样,第三个小朋友发现有3人和自己糖果颜色一样。
第一二个小朋友可互相认为对方和自己颜色相同,比如红色;
第三个小朋友不可能再为红色(否则第一二个小朋友会发现有2人和自己糖果颜色相同),假设他拿到的为蓝色糖果,那么至少还有另外3位同学拿到蓝色的糖果,最终至少有6位小朋友拿到了糖果。
现在请你帮助小明老师解答下这个谜题。
解题思路分析:
首先,相同颜色的同学肯定和他们相同颜色的同学数量是相同的,这么说有点绕啊,举个例子,加入a,b,c同学的颜色一样,则他们能告诉老师都是有两个同学的颜色跟自己相同。再来分析人数的问题,如果有一个同学说有3个同学和自己的颜色相同,那么这里我们就能判断出一定是有4个同学的,假如此时还有一个同学说有3个同学和自己的颜色相同,那么从最少人数的角度讲,他们的颜色可以相同,这样的话我们确定的人数依然是4人,否则就会是8人,那么问题就变成了我们能将多少个同学统一到一个颜色里去。
#include