解题思路: 贪心(每次只考虑当前的前是否大于后,而不考虑后面是否还有更大数)
注意事项: 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 人评分
C语言训练-谁家孩子跑最慢* (C语言代码)浏览:1508 |
C二级辅导-阶乘数列 (C语言代码)浏览:616 |
K-进制数 (C++代码)浏览:854 |
2006年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:809 |
时间转换 (Java代码)浏览:573 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:515 |
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:1030 |
上车人数 (C语言代码)浏览:778 |
C语言程序设计教程(第三版)课后习题6.11 (C语言代码)浏览:549 |
IP判断 (C语言代码)浏览:763 |