首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
12-17 12:34
迅雷_X-PEP 产品星(准入职员工)
沐瞳科技内推,沐瞳科技内推码
游戏运营问题:看你以往经历没有涉及游戏,为什么想进入这行?深挖活动运营经历:评估效果会关注哪些指标?新游戏上线后,你会优先关注哪些数据?如果游戏下载量、留存、回流同时出问题,先解决哪个?平时玩什么游戏?为什么喜欢它?(建议提前准备游戏分析)你觉得《MLBB》有哪些可以改进的地方?📚 高频考点整理▪️ 游戏运营理解:内容搭建、版本迭代、用户/渠道运营、数据分析缺一不可。▪️ 数据指标:留存率、ARPU、付费率、活跃玩家分析是核心。▪️ 新手引导设计:简洁提示+适当奖励+难度梯度是关键。▪️ 活动策划:节日活动、社区互动、召回机制都能提升在线人数。🔍 行业工具推荐数据分析常用:七麦、蝉大师、S...
点赞
评论
收藏
分享
12-15 16:44
曼迪匹艾_人力资源部_HRBP(准入职员工)
MDPI内推,MDPI内推码
工作内容 • 作为助理编辑(AE),负责全英论文发表全流程,包括找审稿人、收发邮件等,每天都会给我派一篇稿件,目前手里已经有十几篇了(以后会一直累积吗?) 加班 • 这个单位主打一个多劳多得,可以身兼数职,所以许多人加班都是为了拿更多更多的💰 • 加班晚上七点后可点一份免费工作餐,但我作为实习生不用加班(8:30-17:30),每天到点就撤,所以还没吃过 实习生转正KPI要求 • 入职3个月发文15篇,6个月发文60篇。 • 转正后每季度30篇,超过部分每篇奖励300元。 福利待遇 五险一金,生日福利、节假日福利(入职每增加一年年假多一天)、年终奖等。另外每天下午3点至3点20为下午茶时...
曼迪匹艾公司福利 121人发布
点赞
评论
收藏
分享
11-27 14:21
同济大学 Java
刷xhs,震惊于xhs真敢给啊!!!明年我有机会吗
#小红书开奖了#
卢来猴祖:
给了这薪资关键拿不了几个月就给你踹了呀
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
13
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
26届双非本鼠硕拿下5个ssp的秋招总结及一条龙经验分享
3246
2
...
大二混子终于找到实习了...
2107
3
...
【求助】被hr骂“刷子”什么意思?
1930
4
...
在mentor视角谈谈实习生摸鱼
1328
5
...
校招入职半年之后又回到了这个地方
1264
6
...
读研还是本科就业?
1053
7
...
字节客户端实习
1001
8
...
2025 一半沉淀,一半兑现
994
9
...
把“购买社保”打成“狗买社保”
884
10
...
对着老板贴脸开大了
842
创作者周榜
更多
正在热议
更多
#
你小心翼翼的闯过多大的祸?
#
2848次浏览
62人参与
#
找不到实习会影响秋招吗
#
1399273次浏览
13631人参与
#
实习没事做是福还是祸?
#
3079次浏览
54人参与
#
考研人,我有话说
#
156473次浏览
1211人参与
#
2025年终总结
#
131779次浏览
2240人参与
#
重来一次,你会对开始求职的自己说
#
767次浏览
19人参与
#
哪些公司笔/面试难度大?
#
7032次浏览
32人参与
#
实习简历求拷打
#
22764次浏览
244人参与
#
携程工作体验
#
18862次浏览
66人参与
#
扒一扒那些奇葩实习经历
#
140049次浏览
1149人参与
#
找不到好工作选择GAP真的丢人吗
#
93624次浏览
1007人参与
#
那些我实习了才知道的事
#
252934次浏览
1784人参与
#
你觉得现在还能进互联网吗?
#
29891次浏览
200人参与
#
机械求职避坑tips
#
81012次浏览
531人参与
#
第一份工作能做外包吗?
#
93961次浏览
599人参与
#
投格力的你,拿到offer了吗?
#
154620次浏览
829人参与
#
作业帮求职进展汇总
#
85187次浏览
559人参与
#
秋招遇到的奇葩面试题
#
101208次浏览
416人参与
#
简历当中有水分算不算造假?
#
154255次浏览
2250人参与
#
什么样的背景能拿SSP?
#
124308次浏览
426人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务