2019南京大学计算机本科生开放日机试

说明

南大的机试分两场,南京本地一场、外地一场。2019年的外地同学的机试难度略高于本地同学机试难度。机试共3题,按照套路一般是动态规划、深广度遍历、树这些题目,大概是leetcode中等难度题,模板题比较多。(南大年年有DP!!!)dp解法想不到的话,可以靠dfs骗分。

题目(2小时3题)

这次说的150以上就有可能、250以上就很稳拿优秀营员

题目一:

    给你一个不超过100位的数n,和一个不超过100的数字k,要求从数n中去掉k个数字,然后使得去掉k个数之后,n最小。
    
    题解链接:https://blog.csdn.net/C20190413/article/details/77368590

题目二:

    有B个男孩,G个女孩,要求所有男孩女孩排成一队,连续的男孩个数不可以超过K个,问一共有多少种排法。(结果需要mod 10007)
    
    这个就是万年不变的必有dp。
    思路一:dfs,会超时,但是可以骗分。(我骗了70,hh)
    思路二:dp
    本题可以看作(G+1)个抽屉,每个抽屉最多放K个物品,一共有B个物品,问不同的放法。这样,本题很容易想到DP解法。

    dp[g][b]+=dp[g-1][b-i], 
    0<=i

题目三:

    给出一个二叉树的前序遍历序列和后序遍历序列的字符串,问通过这两个序列可以构造多少中不同的二叉树,
    因为树的样子不一样,遍历的序列是可能一样的。比如前序序列:abc,后序序列cba,就有4种不同的树。
    简单来说就是如果一棵树他只有一边的子树,那就是子树可能为左子树也可能为右子树。×2就好。
    
    直接dfs暴力就可以过。
    (算是树的前序遍历、中序遍历、后序遍历的变式),主要是理解到前序遍历是根左子树右子树、中序是左子树根右子树、后序是左子树右子树根。

总结

  • 南大及其看中机试,面试机试总分是600分。机试3道题,每题10个用例,每个用例10分,共300分。面试3位老师,每位老师100分,一共300分。最后会将分数汇总,除以3,就是你最后的总分。
  • 因为很多同学都很优秀,在面试上很难拉开差距(每位老师打分一般在85~95打分),所以最大的差距就在机试上了,考了300分的机试和150分的机试最后总分直接差了50分!反正如果你考了300,你就一点稳了。
  • 找老师签字不要着急,不要入营就签,多接触一点老师再让他们签。
  • 面试中的英文,不是机械的叫你自我介绍,提前准备没有太大的用处,比如我同学被问到了:“could you please tell us the differences between tcp and udp protocal?”这种问题完全没有办法提前准备,只有尽人事听天命。
  • 面试中一般涉及:英文题目、简单算法题(例如:在O(n)时间复杂度内找出一个数组中的中位数)、自己的项目介绍(前后端、ml这些都行,反正大胆说就好了)、基础课程:概率论、计网、操作系统等。

你可能感兴趣的:(算法)