一道实习生面试题
2011-11-19 18:13
169 查看
大概是今年的时候, 公司招聘实习生。我被安排阅卷。
当时被一道算法题难住了。 所有阅卷的人, 都觉得这道题很难做, 并且都没有看懂答案。
后来和出题的人沟通, 才懂了要领。 后来用动态规划写了一下这道题。
这道题, 大概的意思是:
有m的鸡蛋, n个篮子, m>=n. 问有多少种方法, 是的每一种方法, 对认识的自然数k<=m, 都能从n个篮子中, 选出f个篮子, 是的f个篮子的鸡蛋总数=k
贴上代码:
define EGG 60 #define BUCKET 10#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>using namespace std;void print(int (*m)[EGG+1][EGG+1]){ for(int i = 0; i < BUCKET; i++) { cout<<"\n\n*i=="<<i; for(int j = 0; j <= EGG; j++) { cout<<endl; for(int w = 0; w <= EGG; w++) cout<<m[i][j][w]<<" "; } }}void algo(){ int m[BUCKET][EGG+1][EGG+1]; memset(m, 0, sizeof(int) * (BUCKET * (EGG + 1) * (EGG + 1)) ); m[0][1][1] = 1; for(int i = 1; i < BUCKET; i++) for(int j = 1; j <= EGG; j++) { for(int w = 1; w <= j; w++) { int lastsum = j - w; for(int z = 1; z <= lastsum ; z ++) { if(w >= z && w <= lastsum+1)
m[i][j][w] += m[i-1][j-w][z]; } } } int sum = 0; for(int i = 1; i <= EGG ; i++) sum += m[BUCKET-1][EGG][i]; cout<<"\nsum is :"<<sum<<endl;}int main(){ algo();}
当时被一道算法题难住了。 所有阅卷的人, 都觉得这道题很难做, 并且都没有看懂答案。
后来和出题的人沟通, 才懂了要领。 后来用动态规划写了一下这道题。
这道题, 大概的意思是:
有m的鸡蛋, n个篮子, m>=n. 问有多少种方法, 是的每一种方法, 对认识的自然数k<=m, 都能从n个篮子中, 选出f个篮子, 是的f个篮子的鸡蛋总数=k
贴上代码:
define EGG 60 #define BUCKET 10#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>using namespace std;void print(int (*m)[EGG+1][EGG+1]){ for(int i = 0; i < BUCKET; i++) { cout<<"\n\n*i=="<<i; for(int j = 0; j <= EGG; j++) { cout<<endl; for(int w = 0; w <= EGG; w++) cout<<m[i][j][w]<<" "; } }}void algo(){ int m[BUCKET][EGG+1][EGG+1]; memset(m, 0, sizeof(int) * (BUCKET * (EGG + 1) * (EGG + 1)) ); m[0][1][1] = 1; for(int i = 1; i < BUCKET; i++) for(int j = 1; j <= EGG; j++) { for(int w = 1; w <= j; w++) { int lastsum = j - w; for(int z = 1; z <= lastsum ; z ++) { if(w >= z && w <= lastsum+1)
m[i][j][w] += m[i-1][j-w][z]; } } } int sum = 0; for(int i = 1; i <= EGG ; i++) sum += m[BUCKET-1][EGG][i]; cout<<"\nsum is :"<<sum<<endl;}int main(){ algo();}
相关文章推荐
- 2012百度实习生面试题一道,打乱100个数的顺序,越乱越好
- 2012百度实习生面试题一道,打乱100个数的顺序,越乱越好 .
- 朋友的一道面试题
- 一道让我无地自容的百度面试题
- 【实习生笔试面试题】2013年搜狐SOHU实习生技术笔试题
- 一道面试题引发的思考
- 百度实习生招聘的一道大数据处理题目(上)
- [练习题] 一道变态的面试题(吐槽啊吐槽)
- 一道关于C++虚函数和多继承的面试题
- 一道sql面试题的解答
- 一道面试题中涉及到的SQL的高级使用
- 有关运算符优先级的一道面试题
- 一道面试题,想明白之后好像锤自己几下~~
- 一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
- 一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
- 关于一道1到N自然数排序的华为面试题
- 一道看上去很吓人的算法面试题:如何对n个数进行排序,要求时间复杂度O(n),空间复杂度O(1)
- Trend科技的一道面试题
- 一道面试题引发的数据库SQL语句实践(含行列转换)
- 海量数据处理之归并、堆排、前K方法的应用:一道面试题