余博文


私信TA

用户名:dotcpp0595286

访问量:990

签 名:

小余也有未来!!

等  级
排  名 1765
经  验 2560
参赛次数 0
文章发表 20
年  龄 0
在职情况 学生
学  校 长江大学
专  业

  自我简介:

TA的其他文章

解题思路:  贪心(每次只考虑当前的前是否大于后,而不考虑后面是否还有更大数)

注意事项:  1.只有前>后才能删  2.每次删完都需要从头遍历  3.两重循坏全部遍历完若还没有达到目标位数直接pop到目标位数  4.若某次内层循坏遍历完没有执行删除则之后的循环都是在空转浪费时间,可以通过设置标志位跳出空转(优化方法,不考虑也行,不会超时)

参考代码:

def process(list,k):
    m = len(list) - k     #  目标位数
    cnt = 0
    for _ in range(k):
        flag = 0
        for i in range(len(list)-1):
            if list[i] > list[i+1]:
                list.remove(list[i])
                cnt += 1
                flag = 1
                break
        if flag == 0:
            break
    if cnt < k:
        for _ in range(k-cnt):
            list.pop()
    for i in list:
        print(i,end='')
    print()


t = int(input())
for _ in range(t):
    n,k = map(int,input().split())
    n = str(n)
    list = [int(i) for i in n]
    process(list,k)


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区