广联达笔试

一.笔试两个小时四道题

1.第一题数学题

题目:五个人和一堆数量为n的硬币,依次取硬币,每个人先拿一个硬币放入堆中然后拿走五分之一,最后剩余的硬币数量在[1000,2000]之间,求一开始的硬币数

2.广搜bfs

题目:M*N的数组nums,其中nums的值只会有0或1;每隔1小时后,值为1的上下左右紧邻的位置如果是0就会变为1,求经过K小时后剩下为0的个数

3.深搜dfs

题目:二叉树路径和为sum的路径数,其中路径必须连续但可以不以根节点开始和叶节点结束,节点数值为[-100000,100000]

此题注意边界:sum=0不能返回一个长度为0的路径

4.动态规划

题目:长度为n的数组nums,每次在剩余数组中取一个数字获得最终求和的最大值,求和规则:如果取nums[j],则sum += nums[j-1] * nums[j] * nums[j+1],当j-1<0,则nums[j-1] = 1,当j+1 >= len(n),则nums[j+1] = 1。其中1<n<500,1<nums[i]<100

例子:nums[4] = {3,1,5,8} 依次取 1,5,3,8 ,得到剩余数组{3,5,8} ,{3,8},{8},{},得到值为sum = 3*1*5 + 3*5*8 + 1*3*8 + 1* 8*1 = 167为最大值

注意:由于n可能为500,则500!算不了,所以不能用暴力的全排列

原文地址:https://www.cnblogs.com/zhihaospace/p/12881667.html