拼多多校招算法第三题, ab词典

感觉是dp,然后分情况讨论
import sys
if __name__ == '__main__':
    n, m, k = list(map(int, sys.stdin.readline().strip().split()))
    record = []
    for _ in range(n+1):
        record.append([0] * (m+1))
    for i in range(m+1):
        record[0][i] = i
    for i in range(n+1):
        record[i][0] = i
    for i in range(1,n+1,1):
        for j in range(1, m+1, 1):
            record[i][j] = record[i-1][j] + 1 + record[i][j-1] + 1
    result = []
    while True:
        if k == 0:
            break
        if n == 0:
            result.extend(['b']*k)
            break
        if m == 0:
            result.extend(['a']*k)
            break
        if k <= record[n-1][m] + 1:
            n = n - 1
            k = k - 1
            result.append('a')
        elif k > record[n-1][m] + 1:
            result.append('b')
            k = k - record[n-1][m] - 1 - 1
            m = m - 1
    print(''.join(result))



#拼多多##笔试题目#
全部评论
请问下面while循环的判定是什么原理
点赞 回复 分享
发布于 2019-09-25 22:18
record[i][j] = record[i-1][j] + 1 + record[i][j-1]+1
点赞 回复 分享
发布于 2019-09-25 20:39
想知道java Long 溢出了怎么办呢?
点赞 回复 分享
发布于 2019-09-25 18:56
a了吗
点赞 回复 分享
发布于 2019-09-25 17:08

相关推荐

05-26 09:07
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
qq乃乃好喝到咩噗茶:院校后面加上211标签,放大加粗,招呼语也写上211
点赞 评论 收藏
分享
评论
3
18
分享

创作者周榜

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