2019阿里校招编程测试题心得体会

先上题目

光明小学的小朋友们要举行一年一度的接力跑大赛了,但是小朋友们却遇到了一个难题:设计接力跑大赛的线路,你能帮助他们完成这项工作么?
光明小学可以抽象成一张有N个节点的图,每两点间都有一条道路相连。光明小学的每个班都有M个学生,所以你要为他们设计出一条恰好经过M条边的路径。
光明小学的小朋友们希望全盘考虑所有的因素,所以你需要把任意两点间经过M条边的最短路径的距离输出出来以供参考。

你需要设计这样一个函数:
res[][] Solve( N, M, map[][]);
注意:map必然是N * N的二维数组,且map[i][j] == map[j][i],map[i][i] == 0,-1e8 <= map[i][j] <= 1e8。(道路全部是无向边,无自环)2 <= N <= 100, 2 <= M <= 1e6。

map数组表示了一张稠密图,其中任意两个不同节点i,j间都有一条边,边的长度为map[i][j]。N表示其中的节点数。
你要返回的数组也必然是一个N * N的二维数组,表示从i出发走到j,经过M条边的最短路径
你的路径中应考虑包含重复边的情况。

样例:

N = 3
M = 2
map = {
{0, 2, 3},
{2, 0, 1},
{3, 1, 0}
}

输出结果result为:
result = {
{4, 4, 3},
{4, 2, 5},
{3, 5, 2}
}

输入样例:

3
2
3 3
0 2 3
2 0 1
3 1 0

输出样例:

[[4, 4, 3],

[4, 2, 5],

[3, 5, 2]]

题目分析

首先确定的就是,题目给出的是一个有N个节点的无向完全图,同时,要求只能走M步,也就是搜索长度被确定为了M,那这样其实思路就很清晰了。由于只给了30分钟,那么太精巧的算法估计一时半会想不出来(对于我这种菜鸟来说啊哈哈哈哈或)那么怎么办?当然是暴力解法最有用了。通过递归的方法,在有限的步长下遍历所有的可能,然后返回最小距离即可。十分感谢CSDN的大佬@蛋烘糕https://blog.csdn.net/u012465304/article/details/81180707)提供的思路,他的代码是C语言的,如果大家对C比较熟悉可以参考他的代码。

代码思路

这里就是一个比较头疼的地方了,如果是递归遍历,那么参数需要的东西就很多了,包括步长,距离等,同时,对于每一个点在搜索完后的回退,要记得同样要给步长减一,不过如果你的参数形式是这样的,比如len是步长dis是距离,参数是len + 1dis + graph[new_start][dest],这样的话,由于这样的传参方式不会改变变量本身大小,那么就直接用就好,不需要再回退的时候还要重新计算,算是一个小技巧。

实际我用了好多好多参数,但是用上的不多,测试结束后回看自己的代码,怕是会把HR气死

部分代码

欸,为了让大家也有锻炼的机会,我这里就提供深度遍历部分的Python代码,其他部分大家就可以参考这段代码依次类推啦,但是不瞒大家,我花时间最多的地方除了理解题目和思路,就是在如何按照格式输入的问题了……真是没想到:

def dfs(graph, dest, curr, step, M, N, min_dis, dis):
    if step == M:
        if curr == dest:
            if min_dis > dis:
                min_dis = dis
        return min_dis
    for i in range(N):
        if i is not curr:
            min_dis = dfs(graph, dest, i, step + 1, M, N, min_dis, dis + int(graph[curr][i]))
    return min_dis

反思

现在也是校招旺季,我也参加了不少的编程线上测试,不得不说自己真的是菜得可怕,尤其是在Google的CodeJam上,自己绞尽脑汁好不容易拿下第一题的时候,看排行榜已经有人快做完了。

?????

果然是大佬们啊,所以说其实写代码这个东西尤其是线上测试,我觉得就是要多练,很多的东西我觉着其实是有一些套路的,同时,比如做多了以后,手自然熟悉,不会一上手,大部分时间都花在了回忆基本操作上。尤其是在时间有限的情况下更为忌讳。当然哈哈哈,想要成为那些Google的大佬们还是需要很多时间的训练,同时再加上一点点天赋加成,应该也是可以无限接近的,加油加油!

KEEP CODING AND DREAM ON

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,281评论 0 2
  • 各校历年复试机试试题 清华、北大、华科试题详细笔记部分,少笔记部分与少数leetcode【含个人整理笔记】 一、详...
    十里江城阅读 1,166评论 0 1
  • 如果和他吵架了,不要歇斯底里的去要一个结果和解释,你可以先听听音乐或者玩会游戏,让自己冷静下来后,再和他交流。 人...
    Lily950阅读 175评论 0 0
  • meta标签设置 这句是要做隐藏状态栏和工具栏,当添加到主屏是会看到明显差异;但在Safari中没差别imagei...
    xunuo0x阅读 410评论 0 0
  • 小哲kate阅读 203评论 2 0