还是和上次一样的题型,但是选择题侧重于数据库,Linux操作系统等,没有什么概率论等数学知识了。只记了编程题
小红的9键输入
给了一个9键的数字和字母对应图,输入规则为,若按一下2,准备输出‘A’,再按一下2,则会准备输出‘B’。此时若按了其他键,那么会把当前准备的字符输出,并准备下一个字母。1没有任何字母,但会直接把当前准备的字母输出。(ps:比如2对应ABC,那么按4次2应该准备了A,即可以循环)
输入:一串按键串,只由1-9构成,保证能够至少输出一个字母
输出:仅大写字母的一串输出(ps:可能最后一个字母在准备中,没有输出)
思路:AC 100%
- 初始化一个哈希表,数字作为键,对应的字符串作为值;建立out和ready区,一个输出,一个准备缓冲区,以及一个计数器count=0;
- 读取按键串并在前面再加一个0,方便之后的操作,假设新的字符串长度为len;
- 遍历按键串,由于加了一个0,所以范围是range(1,len);判断是否是1,如果是,将out+=ready,ready=[];
- 若当前所指不是1,判断当前数字是否与前面的一个相同;若相同,count+=1;若不同,out+=ready,ready=[]。count=0
- 按照格式输出out即可
小红的四子棋
胜利规则和五子棋一样,只是改成了四子。n行m列的矩阵作为棋盘,r代表下小红,p代表小子,.代表还未落子。
输入:n,m (4<=n,m<=100)
n行m长度的由‘r’,‘p’,‘.’组成的字符串
(保证r和p的数量差不超过1,保证连珠不超过7个妻子,保证不会两种棋子都连珠,模拟正常下棋的情况)
输出:
若小红胜利,输出’Kou‘
若小紫胜利,输出’yukari‘
暂无人胜利,输出’to be continued‘
AC:33.33% 这道题实际上,只要无脑输出其中一个,就能拿到1/3的分数
思路:本来想的是用DFS像解决力扣上的岛屿面积问题一样判断的,但是发现貌似不行,但不知道怎么修改;后来想到它的形状应该是固定的,横、竖、两个 方向的斜,是否可以从这个角度遍历,请大佬指教
最小差
给定一棵n个点,以1为根的树,点的标号为[1,n],点i有权重ai,每个点的价值定义为其子树的权重和。求在所有无祖先后代关系的点对(x,y)种,x,y两点价值差值的最小值。若不存在这样子的点对输出1000000000
1<=n<=2000, 1<=ai<=100000, 1<=x,y<=n
输入:
第一行输入一个整数n
第二行输入n个整数,第i个表示ai
接下来n-1行,每行两个整数x,y,表示一条x指向y的边
输出:
一行一个整数表示答案
AC:10%,直接输出1000000000 可以蹭到
思路:按照输入可以获得一棵树,但是不理解题目中每个点的价值定义为其子树的权重和;按照例子所给,貌似只是判断ai中两个数的最小差值,只是这两个数对应的节点不能够祖先后代关系。 没怎么接触过树的题目,完全没有思路。