阿里笔试08.14算法岗



阿里0814,算法岗第二题  咋做呀,想着暴力蹭点分,一点也没蹭上呀,怀疑又没理解题意。。。o(╥﹏╥)o

def dp(s,dicts):
    # print(1111)
    global count
    cur = ''.join(s)
    # print(cur)
    if cur in dicts:
        return
    dicts.add(cur)
    print(cur)
    count = (count+1)%1000000007
    # print(cur)
    # print(count)
    index = 0
    while index<length-1:
        pre = int(s[index])
        last = int(s[index+1])
        if pre>0 and last<9:
            s[index] = str(pre-1)
            s[index+1] = str(last+1)
            # if ''.join(s) not in dicts:
            dp(s,dicts)
            s[index] = str(pre)
            s[index + 1] = str(last)
        if pre<9 and last>0:
            s[index] = str(pre+1)
            s[index+1] = str(last-1)
            # if ''.join(s) not in dicts:
            dp(s,dicts)
            s[index] = str(pre)
            s[index + 1] = str(last)
        index+=1

q = int(input())
for i in range(q):
    s = [each for each in input()]
    if len(s)<2:
        print(0)
        continue
    count = -1
    length = len(s)
    dicts = set()
    dp(s,dicts)
    print(count)


#笔试题目##阿里巴巴#
全部评论
第二题,二维动态规划
1 回复 分享
发布于 2020-08-14 21:19
第2题题目是什么?
点赞 回复 分享
发布于 2020-08-17 11:19
直觉所有长度一样且数字和一样的都相似,然后就简单了
点赞 回复 分享
发布于 2020-08-15 11:25
笔试时没想明白,后面重新想了一下: def similarCount(s):     N = len(s)     if N == 1:         return 0     dp = [[0] * 10 for _ in range(N)]     dp[0][int(s[0])] = 1     for i in range(1, N):         for j in range(10):             cur = int(s[i])             diff = j - cur             for k in range(10):                 pre = k + diff                 if 0 <= pre < 10:                     dp[i][j] += dp[i-1][pre]         print(dp[i])     ans = 0     for j in range(10):         ans += dp[-1][j]         ans %= 1000000007     return ans - 1 q = int(input()) for i in range(q):     s = input()     ans = similarCount(s)     print(ans) 不知道有没有bug
点赞 回复 分享
发布于 2020-08-15 00:19
蹲一个题解 是类似于这样的组合数学问题吗?
点赞 回复 分享
发布于 2020-08-14 20:17

相关推荐

拒绝996的悲伤蛙:此贴终结|给路过的牛友分享一下心得👇 实习的时候不要光埋头干活,身边的大佬同事才是真·宝藏人脉!大胆请教他们工作以及职场上的问题以我的经历,我的带教有十几年工作经验,做过运维、后端开发、web测试,现在是高级软测,是行走的避坑指南 我之前纠结要不要学Web测试简历,被他一句话点醒:Web发展成熟,岗位需求在缩,AI对互联网的冲击可能以后架构+开发+测试一人包揽。现在用户更多用的是移动端APP/小程序,相比之下天天守着电脑刷网页的人基数小。 这里我的纠结得到反馈,于是我又把简历发给带教,获得了一对一的简历指导。 感兴趣的可以看看: 1.教育背景:本科→本科(全日制) 2.实习经历:总体问题不大,但第2点要稍作修改,可以写但做功课,如风机、水箱……可能会问用哪个供应商的?使用寿命、型号、电压电流、多少秒会触发逻辑? 3.项目经历(坑太多,大型翻车现场): - 项目名越直白越好,让人一眼就知道你干了啥。 -用的什么语言设计核心接口,异步执行做功课,涉及线程问题,被问可回答n个功能是如何错开异步执行的 - “验证任务消费……阻塞丢包”“高负载稳定性”这种词,没三五年开发功底不要写,不然面试时被问线程、数量级、CPU占用,内存带宽等影响性能的直接原地社死。 -做功课 -做功课,测了哪些模块,如何设计,接口流量抓包,token,变量…… -做功课,要熟悉网络协议…… 带教之前做互联网开发的时候面试过很多人,总的来说不要为了显得项目高大上过渡包装,写了就要做好拷打的准备
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
03-02 08:18
集美大学 Java
钱嘛数字而已:没有赛事奖项么?另外,项目经历字有点多哈,建议突出一下重点:用的什么技术,解决什么问题,达到什么效果。
大家都开始春招面试了吗
点赞 评论 收藏
分享
评论
点赞
3
分享

创作者周榜

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