首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
牛客05288号
2016-09-02 21:20
大连海事大学 算法工程师
关注
已关注
取消关注
面试时遇到的一个算法题,请教大家
面试时的时候,面试官问了我一个算法题,题目大概是这样的:一个手机键盘上的数子0-9(也就是九宫格键盘),假如有两个机械臂a和b,初始位置都在0数字上,机械臂移动一步都会消耗一定的能量,问随意给定一个手机号码,两个机械臂怎样移动才会消耗最少的能量把手机号码打印出来。
希望大家给个思路,我觉得是动态规划吧,最后能把代码贴出来,谢谢了……
提示
全部评论
推荐
最新
楼层
我来讲一个冷笑话
University of Helsinki C++
因为数字不多,可以动态规划吧。 数字个数1,返回a,b里移动距离最小的。 数字个数大于1,返回min(a移动距离+剩下n-1个数字移动距离最小的,b移动距离,+剩下n-1个数字移动距离最小的。
点赞
回复
分享
发布于 2016-09-03 09:30
牛客1481368号
东北大学 C++
#include<iostream> #include <vector> using namespace std; int DistanceArry[10][10]; int Mindistance=INT_MAX; int arry[11]; int point[2]; void DFS(int index,int value) { if(index==11) { if (value<Mindistance) { Mindistance=value; return ; } } else { for(int i=0;i<2;i++) { int tmp=point[i]; int addvalue=DistanceArry[point[i]][arry[index]]; point[i]=arry[index]; DFS(index+1,value+addvalue); point[i]=tmp; } } } int main() { for(int i=0;i<11;i++) { cin>>arry[i]; } point[0]=point[1]=0; for(int i=0;i<10;i++) { for(int j=i;j<10;j++) { if(i==0) { DistanceArry[j][0]=DistanceArry[0][j]=(11-j)/3+(11-j)%3; } else { DistanceArry[i][j]=DistanceArry[j][i]=((j-i)/3)+(j-i)%3; } } } DistanceArry[0][0]=0; DFS(0,0); cout<<Mindistance<<endl; }
点赞
回复
分享
发布于 2016-09-03 09:19
Horanol
字节跳动_Data-商业化技术_后端开发
这不是一个局部最优的题,不能用贪心算法,也就是不能每一步都取距离最小的值,这样总的步数未必是最小的。
点赞
回复
分享
发布于 2016-09-02 23:22
牛客492426号
Java
让a去找第一个数字,达到后,a在第一个数字位置,b在0,计算a和b距离第二个数字的距离,谁近谁走,依次类推 (感觉就是计算两个点到第三个点的距离,近的变成第三个点,距离相等走a,再继续计算,个人想法,仅供参考,不知道对不对...)
点赞
回复
分享
发布于 2016-09-02 22:15
呵呵哒2333
北京理工大学 C++
这个手机号码是11位的,搜索空间很小,用普通的搜索就行了:(pos1, pos2, index) = Min(dis(pos1, telnum[index]) + (telnum[index], pos2, index+1) /*第一个机械臂从pos1移动到telnum[index]*/,dis(pos2, telnum[index]) + (pos1, telnum[index], index+1)) /*或者第二个机械臂从pos2移动到telnum[index]*/ ; (pos1, pos2, 11) = 0。 (其中dis函数是两个按键的移动消耗,O(1)的复杂度),然后可能会出现重复计算,那么就加个记忆set保存计算过的结果,还有(pos1, pos2, index) == (pos2, pos1, index)。
点赞
回复
分享
发布于 2016-09-02 22:10
cc98
浙江大学 C++
双层的DP
点赞
回复
分享
发布于 2016-09-02 21:32
金八铜九炮灰十
蓝翔职业技术学校
0-9一共10个数,哪来的九宫格?
点赞
回复
分享
发布于 2016-09-02 21:30
gongzixiaomu
华南理工大学
各个数字之间的距离集合中求最小和,初步想法……
点赞
回复
分享
发布于 2016-09-02 21:26
暂无评论,快来抢首评~
相关推荐
08-08 08:42
美团_HR
美团投递指南
如果感觉自己准备的有七八成的学历比较好且算法能力还ok的同学,可以选择做第一批8月9号的笔试,因为美团有三个志愿的机会,挂了之后会转入第二第三志愿。即使三个志愿都用完了,只要你的面评不会到不了及格线,后续还有其他部门继续捞起来的,所以越早进入面试流程机会越多。(前提是不要留下不好的面评)准备的有七八成的学历比较好且算法水平比较一般的同学,建议是参与8/23的笔试。准备的比较差的同学,对于正式批,一定不要随随便便的去进入笔试和面试流程,这里强调一下,有个七八成就可以放心笔面试了,不是说要准备的多完美。但是如果连笔面的及格线都到不了的,基本上就是一轮游,面评差的三个志愿甚至只有一次面试机会,第二第...
投递美团等公司10个岗位
点赞
评论
收藏
分享
08-08 12:06
东南大学 运营
字节测评秒挂
还没准备好就发笔试了,到底该怎么刷题呀,太难了,还有倒计时
投递字节跳动等公司10个岗位
点赞
评论
收藏
分享
08-05 18:14
门头沟学院 Java
小鹏 简历挂
听说是学历厂,咋还挂简历了
小花的沉默:
是学历厂没错啊,学历太高了不要
投递小鹏汽车等公司10个岗位
点赞
评论
收藏
分享
08-01 11:19
电气工程师
救救孩子吧
找工作找的快崩溃了
点赞
评论
收藏
分享
08-07 11:17
江西理工大学 Java
汇川秋招
初筛中,想问问各位佬,这个卡bg吗
投递汇川技术等公司10个岗位
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
13
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
总结常用的拖offer的几种话术
2.0W
2
...
26届秋招建议
1.4W
3
...
字节秋招-后端开发-一面
1.4W
4
...
8月份面经整理的算法高频题集合
8074
5
...
8.13快手秋招Java后端二面记录
5694
6
...
本华为OD终于翻身!(百度后端面经)
4186
7
...
字节二面-半技术半聊天?
3354
8
...
小红书笔试
3235
9
...
快手 秋招 一面
3235
10
...
小红书前端(已oc)
3179
创作者周榜
更多
正在热议
更多
#
给26届的秋招建议
#
18304次浏览
573人参与
#
如果校招重来我最想改变的是
#
276949次浏览
2881人参与
#
秋招,不懂就问
#
7723次浏览
68人参与
#
如果你有一天可以担任公司的CEO,你会做哪三件事?
#
31845次浏览
487人参与
#
实习的内耗时刻
#
30294次浏览
392人参与
#
vivo求职进展汇总
#
220808次浏览
1366人参与
#
我的AI电子员工
#
11584次浏览
92人参与
#
秋招投递记录
#
24763次浏览
283人参与
#
我的秋招“寄”录
#
29485次浏览
357人参与
#
CVTE求职进展汇总
#
17895次浏览
296人参与
#
你最近一次加班是什么时候?
#
75716次浏览
413人参与
#
我的国央企投递进展
#
51401次浏览
308人参与
#
独居后,你的生活是更好了还是更差了?
#
9398次浏览
154人参与
#
速腾聚创求职进展汇总
#
34392次浏览
241人参与
#
工作上你捅过哪些篓子?
#
13793次浏览
95人参与
#
你上一次给父母打电话是什么时候
#
9705次浏览
98人参与
#
规定下班时间vs实际下班时间
#
15997次浏览
127人参与
#
你觉得找工作该拿大厂还是小厂练手
#
200444次浏览
1761人参与
#
通信硬件2023笔面经
#
38432次浏览
275人参与
#
入职第四天,心情怎么样
#
34018次浏览
443人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务