完美世界笔试

机器学习岗,选择题全是C和爪哇😥。
编程题都是动态规划
import sys
n = int(sys.stdin.readline().strip())
m = int(sys.stdin.readline().strip())

arr = list(map(int, sys.stdin.readline().strip().split(" ")))
res = [[0] * m for _ in range(n)]
c = 0
for i in range(n):
    for j in range(m):
        res[i][j] = arr[c]
        c += 1

class Solution:
    def calculateMinimumHP(self, dungeon):
        rows = len(dungeon)
        cols = len(dungeon[0])
        dp = [[0] * cols for  _ in range(rows)]
        # 初始化,最右下角的血量。至少为1,并且若有损失,还需要增加
        dp[-1][-1] = max(1,1 - dungeon[-1][-1])
        for i in range(cols-2, -1, -1):
            # 只能朝右侧走
            dp[rows-1][i] = max(1, dp[-1][i+1] - dungeon[-1][i])
        for i in range(rows-2, -1, -1):
            dp[i][cols-1] = max(1, dp[i+1][-1] - dungeon[i][-1])

        for i in range(rows-2, -1, -1):
            for j in range(cols-2, -1, -1):
                dp[i][j] = max(1, min(dp[i+1][j], dp[i][j+1]) - dungeon[i][j])

        return dp[0][0]


print(Solution().calculateMinimumHP(res))

钱用最少不同金额的硬币组成,求最少的个数。第一个方法,没考虑边界,超时80%,第二AC
n = int(sys.stdin.readline().strip())

arr = list(map(int, sys.stdin.readline().strip().split(" ")))
money = int(sys.stdin.readline().strip())

class Solution:
    def getLeastquan(self, money, arr, n):
        if min(arr) > money:
            return -1
        if money in arr:
            return 1
        min_count = money
        for i in range(n):
            count_num = self.getLeastquan(money - arr[i], arr, n) + 1
            if count_num < min_count:
                min_count = count_num

        return min_count

    def getLeastCoins(self, money, arr, n):
        dicts = {}
        if min(arr) > money:
            return -1
        dicts = {0:0}

        for i in range(1, money+1):
            dicts[i] = money + 1
            for j in arr:
                if j <= i:
                    dicts[i] = min(dicts[i], dicts[i-j] + 1)
        if dicts[money] == money + 1:
            return -1
        else:
            return dicts[money]


# print(Solution().getLeastquan(money, arr, n))
print(Solution().getLeastCoins(money, arr, n))


#完美世界##机器学习##笔试题目#
全部评论
收到面试通知没?
点赞 回复 分享
发布于 2019-08-31 15:10
第一题动态规划思路可以讲讲吗?求指点😁
点赞 回复 分享
发布于 2019-08-24 09:57

相关推荐

屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
评论
3
12
分享

创作者周榜

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