题目链接
http://bailian.openjudge.cn/practice/4137/
这个题目原本以为选出前k大的数删除就可以得到正确结果,但是这种策略是错的,举一个反例:52376 2,如果取出7 6,得到523,显然还有更小的数 236。
正确的贪心策略是从左到右每次选取一个比后一位大的数,删除,进行k次,如果所有数字是增序的,就删除最后一个数字。
解题代码
#include <cstdio>
#include <cstring>
char s[15];
int m;
int main(){
int t;
scanf("%d", &t);
while(t--){
scanf("%s %d", s, &m);
int l = strlen(s);
while(m--){
for(int i = 0; i < l; i++){
if(s[i] > s[i+1]){
for(int j = i; j < l; j++){
s[j] = s[j+1];
}
break;
}
}
l--;
}
printf("%s\n", s);
}
return 0;
}
原文地址:https://www.cnblogs.com/zhangyue123/p/12610678.html
时间: 2024-10-04 12:40:56