赞
踩
版权声明:原创作品,允许转载。转载时请务必以超链接的形式标注原始文章、作者信息和本声明。否则追究法律责任http://blog.csdn.net/wo_hs
今天接到了百度公司暑期实习的电话面试,面试官人非常好,在我遇到困难的时候还提醒我。话不多说,先把我的面试经过贴到这里,给大家一个参考。
首先一上来,让我做个自我介绍。我就简单介绍了一下自己,然后介绍了一下自己的项目经历。面试官说一面注重算法,看我在学校好像不是搞算法这块的。我说学校里学的那些算法应该也还可以,然后面试官就说那就先给我来一个不算难但是也不太简单的问题吧。题目如下:
有两个100G的URL文件,里面存储的都是一行一行的URL,如何找到两个文件中相同的URL。后面还让我分析我的方法的时间复杂度。我问面试官有没有其他的方法,他说他自己有想了4、5种方法(真是大神啊!!!膜拜!!!),然后给我讲了一种归并的方法,开始还能跟上一点思路,后面就完全不懂了。。。太弱了真是。。。
然后又问了我一个稍微简单一点的算法题(结果这个题答的不是很好):这是一个概率论的问题。一个射击运动员,他射中1-10环的概率都是0.1,不会脱靶,问题是他射击10次总环数是80环的概率是多少。
我说最直观的想法是遍历出10次总环数80的所有可能,然后用概率论的方法计算。问题就是如何枚举。他提示我用动态规划。第一次我讲的动归方程不对,搞得我很紧张,面试官还耐心的提示我,第二次貌似是给出了正确的动归方程。面完之后我想了一下,把代码写了出来不知道正确与否还请大家指正。
- #include <fstream>
- #include <iostream>
- using namespace std;
-
- long f[11][101];
-
- ofstream fout("out.txt");
-
- int main(){
- // 初始化
- int i,j;
- for(i=0;i<101;i++)
- f[0][i] = 0;
- for(i=0;i<11;i++)
- f[i][0] = 0;
- f[0][0] = 1;
- // DP
- for(i=1;i<11;i++)
- for(j=1;j<101;j++){
- for(int k = (j-10>0?j-10:0);k<j;k++){
- f[i][j] += f[i-1][k];
- }
- }
-
- for(i=0;i<11;i++){
- for(j=0;j<101;j++)
- fout << f[i][j] << " ";
- fout << endl;
- }
-
- fout << "10次打80环有:" << f[10][80] << "种方法" << endl;
-
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。