笔试1:创达
单选*4、多选*2、填空*4、编程*2
贪心算法不能解决哪种问题?最小生成树、N皇后、单源最短路径、背包问题
哈夫曼编码求带权路径长度。
循环队列出队队头指针计算。
二分查找时的索引序列。
某系统20*6=140成立,该系统是多少进制? (我自己一个个算的,网友方式p*2*6=p*p+4*p)
不稳定的排序算法?(我做错了)
顺序表顺序查找的平均查找长度是?
S=“structure”中以t为首字符的子串有多少?
高度为5的平衡二叉树至少有几个结点?
从上到下、从左到右、从1开始对完全二叉树结点进行编号,则编号为i的结点的左孩子结点编号为?
编程1:金币发工资。第一天发一枚金币,之后两天(第二天、第三天)每天发两枚金币,之后三天每天发三枚金币,以此类推。即当连续N天每天收到N枚金币后,之后的连续N+1天里每天收N+1个金币。问前n天收了多少金币?
int calcGoldenCoins(int n);
譬如:6=》14;18=》73
int calcGoldenCoins(int n) { int res=0; int x=(sqrt(8*n+1)-1)/2; for(int i=1;i<=x;++i) res+=(i*i); int offset = x*(x+1)/2; res+=(n-offset)*(x+1); return res; }
我这就比较“淳朴”的做法了。看了网友的:
int calcGoldenCoins(int n) { int res = 0; int t = 1; //标记当天是获得相同金币得第几天 int s = 1; //标记当天获得金币 for(int i=1;i<=n;++i) { res += s; if(t<s) t++; else { t = 1; s++; } } return res; }
编程2:水房有m个水龙头,每秒供水量均为1。n名同学接水且顺序固定,i号同学接水量为w[i]。开始接水时,1到m号各占1个水龙头,同时开始接水。某同学j完成接水量w[j]后无缝切换到同学k。若n<m,则n个水龙头供水,其余关闭。先给出n名同学接水量,按上述规则,所有同学完成接水需要多少秒?
譬如:5,3,[4,4,1,2,1]=>4
int water(int n,int m,vector<int>&arr) { int w=0; //接完水的人数 for(int i=1;m+w<n;++i) { for(int j=0;j<m;++j) { arr[j]+=arr[m+w]; w++; } } sort(arr.begin(),arr.end()); return arr[n-1]; }
上述代码同样来自网友,这个模拟的思路,咳咳,学不会啊。