A和C题,小白解法,不知道有哪些问题,望大佬赐教

A题感觉没啥难得,但是为啥提交就全部没通过,就迷惑

while True:
    try:
        n = int(input())
        nums = list(map(int, input().split()))
        targetnums = list(map(int, input().split()))
    except:
        break

    # 计算由nums变换成targetnums所需的步数,每一步都将一个数字左移若干位
    step = 0
    j = 0
    for i in range(len(targetnums)):
        if targetnums[i] == nums[j]:
            j+=1
            continue
        else:
            step += 1
    print(step)

C题本来还想什么动态规划,后干脆回溯吧,感觉也没啥问题,但又是啥也没通过,起码能过个三分之一吧,为啥为啥,大佬求赐教!

import collections

while True:
    try:
        n = int(input())
        target = list(map(int, input().split()))
    except:
        break
    plan = []
    for i in range(n):
        plan.append(list(map(int, input().split())))


    plan = [[-2, 0], [3, 0], [4, 0], [5, 0], [0, 10], [0, -10], [0, 10]]
    target = [5, 10]

def com(candidates, target):

    path = []
    res = []
    candidates.sort()
    print(candidates)

    def backtracking(andidates, target, sum_, start_index):
        if sum_ == target:
            res.append(path[:])
            return

        # 单层递归逻辑
        for i in range(start_index, len(candidates)):

            sum_[0] += candidates[i][0]
            sum_[1] += candidates[i][1]
            path.append(candidates[i])
            backtracking(candidates, target, sum_, i+1)
            path.pop()             
            sum_[0] -= candidates[i][0]
            sum_[1] -= candidates[i][1]      

    backtracking(candidates, target, [0,0], 0)
    return res

res = com(plan, target)
# print(res)
cnt = []
for i in range(len(res)):
    cnt.append(len(res[i]))
# print(cnt)
ans = collections.Counter(cnt)
# print(ans)
for i in range(1, n+1):
    if i in ans:
        print(ans[i])
    else:
        print(0)

全部评论
第一题有需要标记一下移动过的元素,比如下面的数据,你的会出错 1 2 3 4 5 6 7 8 9 5 4 3 2 1 6 7 8 9 第三题分成两个部分,枚举所有的可能,N最大40,分成两部分最大20,每一部分共有 2^20 种可能。然后类似 two sum,枚举前一半的所有可能值,计算后一半需要的值,统计个数。
1 回复 分享
发布于 2022-04-28 23:00

相关推荐

06-02 15:53
阳光学院 Java
点赞 评论 收藏
分享
不要停下啊:大二打开牛客,你有机会开卷了,卷起来,去找课程学习,在牛客上看看大家面试笔试都需要会什么,岗位有什么需求就去学什么,努力的人就一定会有收获,这句话从来都经得起考验,像我现在大三了啥也不会,被迫强行考研,炼狱难度开局,啥也不会,找工作没希望了,考研有丝丝机会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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