蓝湖一面
- 自我介绍
- 面试官介绍面试流程:算法、项目、基础
- 问代码量有多少
- 平时都怎么提升编程水平,答做算法题
- 算法,先难后易,难的做出来就不用做简单的了
问:麦当劳有三种鸡块包装,分别装7
,13
,29
块鸡块,让你去买n
块鸡块,问能不能买到。
答:先分别计算n%7
,n%13
,n%29
是否为零,如果是返回true
,否则枚举abc
,看是否存在7a+13b+29c=n
,存在返回true
,否则返回false
。
问:有其他方法吗
答:动态规划,定义dp[i]
为i
是否能买到,能买到就为true
,否则为false
,初始化dp[i]
为false
,dp[7]
,dp[13]
,dp[29]
为true
。之后进行一次遍历,只要dp[i-7],dp[i-13],dp[i-29]
其中之一为真,dp[i]
即为真,否则为假。
问:行,那你实现一下代码。
打开ide
写代码。本来想写在main
函数里的,过了一秒觉得不妥封装成函数,面试官也提醒封装一下。开始写:
bool isCanBuy(int n) {
vector<int> hash = {
7,13,29 };
for (const auto& h : hash) if (n % h == 0)