解题思路: 贪心(每次只考虑当前的前是否大于后,而不考虑后面是否还有更大数)
注意事项: 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语言程序设计教程(第三版)课后习题8.1 (Java代码)浏览:781 |
高精度加法 (C++代码)(大数加法)浏览:933 |
不容易系列2 (C语言代码)浏览:597 |
本人酷爱递归实现很多问题,这里也是浏览:556 |
简单的a+b (C语言代码)浏览:577 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:1918 |
陶陶摘苹果2 (C语言代码)浏览:601 |
C二级辅导-统计字符 (C语言代码)浏览:647 |
生日日数 (C语言代码)浏览:1502 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:468 |