七牛 笔试 做到了这样一道题

0-10000  有多少个带有数字3 或者4? 那时候当场闷逼
有标号1,2,3,4,5的五小球和编号为1,2,3,4,5的五盒子,将五小球投入5盒子,每只盒子投放一个球,求没有求和盒子相等的情况。
也不会。。。
有一个二维数组  一个规则从左上走到右下 只能往下或者是往右走。路过的数组的和的最少路径,求最少的和。
我用贪心算法  可是肯定有缺陷 否则只能全部遍历 有简单的方法么?? 

全部评论
抖个机灵,编程题可以调试,用来跑第一题。。。(跟上次笔试一哥们儿学的)
点赞 回复 分享
发布于 2016-10-26 09:35
前两个是排列组合,第三个是最简单的dp 预处理最左边和最上边,其他 dp[i][j]=min(dp[i-1][j],dp[i][j-1])+a[i][j];
点赞 回复 分享
发布于 2016-10-25 21:32
七牛听同学说只招几个人,所以我没认真做。不过感觉题目不难,提前1个多小时就交了
点赞 回复 分享
发布于 2016-10-26 16:34
public class Solution {     public int  min(int a,int b){ return ((a)<(b)?(a):(b)); }     public int minPathSum(int[][] grid) {     int i,j,m,n;       int [][] dp = new int[100][100];     n = grid.length;     m = grid[0].length;     dp[0][0]=grid[0][0];       for(i = 1;i<m;i++){     dp[0][i] = dp[0][i-1]+grid[0][i];//横      }     for(j = 1;j<n;j++){     dp[j][0] = dp[j-1][0]+grid[j][0];//纵      }          for(i=1;i<n;i++)           for(j=1;j<m;j++){  //中间部分的计算              dp[i][j] = min(dp[i-1][j]+grid[i][j],dp[i][j-1]+grid[i][j]);           }             return dp[n-1][m-1];         } }
点赞 回复 分享
发布于 2016-10-26 14:45
#include<stdio.h> #include<string.h>  #include<stdlib.h> int main(){ int i,sum = 2; char a[6]={0}; for(i = 0;i<100;i++){ if(i>10 && i<=99){ itoa(i,a,10);//覆盖方式  if(a[1]== '3' || a[1] == '4' || a[0] == '3' || a[0]=='4')//先判断个位 是3 或者是4 的话就加加  { sum++; } //printf("%s",a); memset(a, 0, sizeof(a)); } else if(i>=100 && i<=999){ itoa(i,a,10);//覆盖方式  if(a[2]== '3' || a[2] == '4'||a[1]== '3' || a[1] == '4' || a[0] == '3' || a[0]=='4')//先判断个位 是3 或者是4 的话就加加  { sum++; } memset(a, 0, sizeof(a)); } else if(i>=1000 && i<=10000){ itoa(i,a,10);//覆盖方式  if(a[3]== '3' || a[3] == '4'||a[2]== '3' || a[2] == '4'||a[1]== '3' || a[1] == '4' || a[0] == '3' || a[0]=='4')//先判断个位 是3 或者是4 的话就加加  { sum++; } memset(a, 0, sizeof(a)); } } printf("%d",sum); }
点赞 回复 分享
发布于 2016-10-26 11:37
第三题是一道简单dp,都遇到很多次了!
点赞 回复 分享
发布于 2016-10-26 01:18
f(n-2)种题解;2,放入除盒子n和i以外的盒子,子问题有f(n-1)种题解!综上,递推式为:f(n)=(n-1)*(f(n-1)+f(n-2))
点赞 回复 分享
发布于 2016-10-26 01:15
第二题:设有n个球和n个盒子,用f(n)表示题解,则球n有n-1种放法,假设放到盒子i中,那么球i有两种可能:1,放入盒子n中,此时除去编号i和n的球和盒子,剩余子问题有f
点赞 回复 分享
发布于 2016-10-26 01:08
第一题叫数位dp 其实当dfs写也行。 从低位到高位考虑:考虑这一位自己是3或4的,加上这一位不是3或4,但低几位有3或4的和。 (说实话,我还是不会写0~895246,有多少个带3或4这种,上界不是整的题…… 低位到高位操作,算没上界和有上界2种情况?) 第二题是错位排列问题,可以根据容斥原理现场推…… 但是首先高考不要求容斥原理的理解…… 第三题不会那是真挂飞了…… 第三题说是递推/动态规划,其实也可以直接套最短路的。 每个点自己的距离是左上角到这个点的最小权值和。 然后每个点有2条边:向下或向右。 图建好了,直接求起点到终点的最短路,done。 (当然面试官应该希望看到递推的,最短路估计勉强给过……)
点赞 回复 分享
发布于 2016-10-25 21:42
第二个就是高中排列组合的题吧。第三个bfs
点赞 回复 分享
发布于 2016-10-25 21:28

相关推荐

包行:平时怎么刷算法题的哇,字节的手撕听说都很难
字节跳动工作体验
点赞 评论 收藏
分享
真tmd的恶心,1.面试开始先说我讲简历讲得不好,要怎样讲怎样讲,先讲背景,再讲技术,然后再讲提升多少多少,一顿说教。2.接着讲项目,我先把背景讲完,开始讲重点,面试官立即打断说讲一下重点,无语。3.接着聊到了项目的对比学习的正样本采样,说我正样本采样是错的,我解释了十几分钟,还是说我错的,我在上一家实习用这个方法能work,并经过市场的检验,并且是顶会论文的复现,再怎么不对也不可能是错的。4.面试官,说都没说面试结束就退出会议,把面试者晾在会议里面,丝毫不尊重面试者难受的点:1.一开始是讲得不好是欣然接受的,毕竟是学习。2.我按照面试官的要求,先讲背景,再讲技术。当我讲完背景再讲技术的时候(甚至已经开始蹦出了几个技术名词),凭什么打断我说讲重点,是不能听出人家重点开始了?这也能理解,每个人都有犯错,我也没放心上。3.我自己做过的项目,我了解得肯定比他多,他这样贬低我做过的项目,说我的工作是错误的,作为一个技术人员,我是完全不能接受的,因此我就和他解释,但无论怎么解释都说我错。凭什么,作为面试官自己不了解相关技术,别人用这个方式work,凭什么还认为这个方法是错的,不接受面试者的解释。4.这个无可厚非,作为面试官,不打招呼就退出会议,把面试者晾着,本身就是有问题。综上所述,我现在不觉得第一第二点也是我的问题,面试官有很大的问题,就是专门恶心人的,总结面试官说教,不尊重面试者,打击面试者,不接受好的面试者,技术一般的守旧固执分子。有这种人部门有这种人怎么发展啊。最后去查了一下,岗位关闭了。也有可能是招到人了来恶心人的,但是也很cs
牛客20646354...:招黑奴啊,算法工程师一天200?
点赞 评论 收藏
分享
评论
点赞
7
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务