说明
南大的机试分两场,南京本地一场、外地一场。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<min(b,k),其中dp存储插入位置g时已使用b个男孩的可能数。dp[0][0]=1,输出dp[G+1][B]
题目三:
给出一个二叉树的前序遍历序列和后序遍历序列的字符串,问通过这两个序列可以构造多少中不同的二叉树,
因为树的样子不一样,遍历的序列是可能一样的。比如前序序列:abc,后序序列cba,就有4种不同的树。
简单来说就是如果一棵树他只有一边的子树,那就是子树可能为左子树也可能为右子树。×2就好。