首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
昨天 11:18
东南大学 C++
长川科技和海康
大佬给点建议,暂时是这两想选一下,网上评价都不好,所以不好选,公积金都是12% ,不过长川基于全部Base70%左右的12%,海康开的有点白菜
投递长川科技等公司10个岗位
点赞
评论
收藏
分享
10-29 09:10
门头沟学院 客户端其它
字节客户端一面面经
1、手撕二十分钟,两个大数字符串相乘,求乘积,字符串打印出来 人都蒙了,题目只有几个字 2、介绍Java反射 3、反射的优点和缺点 4、有没有什么方式能防止通过反射查看到某个字段(JVM层面) 5、刚刚提到反射可以动态加载MySQL驱动或Oracle驱动,那有没有其他的方式也能动态加载不同数据库驱动 6、HTTP和HTTPS区别 7、加密算法有哪些,实现过程 8、客户端怎么对密文进行解密 9、如果要让你实现一个抓包工具,让用户能实现通过工具解密看明文
查看9道真题和解析
点赞
评论
收藏
分享
10-31 20:07
西安财经大学 Java
你大爷👨🏻🦳
我真没招了,像吃了一口💩,恶心坏了
喵喵喵6_6:
这薪资太哈人了
点赞
评论
收藏
分享
10-28 12:05
北京理工大学 算法工程师
无论文秋招——五八同城二面
45min和一面一样,看着都是那种比较实在的中年人问巨多细节数据量到模型参数到loss function到用的卡的数量CLIP的损失函数,infoNCEimage encoder 和 text encoder用的什么模型dim是多少qwen2.5 -vl 的data flowMrope怎么编码的https://zhuanlan.zhihu.com/p/719388479强化学习的目标函数,忘了重要性采样了反问业务
查看7道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
13
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
造谣刑法老师媚男,反被老师法院起诉
1.2W
2
...
秋招小失败-后端小小劝退(大结局)
6296
3
...
你们说,人会一直倒霉吗?
4931
4
...
9本秋招后端收获9+offer, 我做对了什么?
4846
5
...
一个大专学历15年IT之路的感悟
3827
6
...
字节懂车帝日常一面二面面经(已挂)
3335
7
...
秋招能拿多个大厂offer的其实就两种人
2712
8
...
cvte体验实习
2060
9
...
好想被坚定地选择
1749
10
...
团子今年是不是普遍涨薪了?开水团变甜了?
1686
创作者周榜
更多
正在热议
更多
#
校招生月薪1W算什么水平
#
38841次浏览
212人参与
#
一人一个landing小技巧
#
124745次浏览
1450人参与
#
“vivo”个offer
#
40267次浏览
284人参与
#
如果上班像打游戏,你最想解锁什么技能
#
9235次浏览
74人参与
#
我和mentor的爱恨情仇
#
77176次浏览
427人参与
#
为了实习逃课值吗?
#
30801次浏览
281人参与
#
哪一瞬间觉得自己长大了
#
39002次浏览
494人参与
#
你见过哪些工贼行为
#
25721次浏览
128人参与
#
vivo工作体验
#
28674次浏览
124人参与
#
工作后明白的那些道理
#
22478次浏览
225人参与
#
实习吐槽大会
#
386147次浏览
2156人参与
#
被同事甩锅了怎么办
#
23680次浏览
100人参与
#
我是面试官,请用一句话让我破防
#
27986次浏览
132人参与
#
中美关税战对我们有哪些影响
#
44175次浏览
371人参与
#
和mentor 1on1 都聊什么?
#
1478次浏览
19人参与
#
你的秋招第一场笔试是哪家
#
257586次浏览
2022人参与
#
中美关系回暖,你会选择出海吗?
#
7890次浏览
118人参与
#
哪些行业值得去?
#
6246次浏览
52人参与
#
华为保温
#
108778次浏览
410人参与
#
你认为工作的意义是什么
#
193926次浏览
1180人参与
#
读研or工作,哪个性价比更高?
#
79077次浏览
769人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务