#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<malloc.h>
#include<ctype.h>
typedef struct node{
char num;
struct node* ptr;
}jj;
int main(){
char all[300]={0};
gets(all);
int k, l=strlen(all);
jj* head=calloc(1, sizeof(jj));
jj* bef=calloc(1, sizeof(jj));
bef=head;
scanf("%d", &k);
for(int i=0; i<l; i++){
jj* a=calloc(1, sizeof(jj));
a->num=all[i];
bef->ptr=a;
bef=bef->ptr;
}
int st=0, j=0, min=0, max=l-k;
jj* pos;
while(k&&st<max){
for(bef=head, j=0; j<st&&bef; j++, bef=bef->ptr);
jj* loop=(jj*)calloc(1, sizeof(jj));
loop=bef->ptr;
if(loop){
min=loop->num;
pos=loop;
}
for(j=0; j<k+1&&loop; loop=loop->ptr, j++){
if(loop->num<min){
//if(st==0&&loop->num=='0') continue;
pos=loop;
min=loop->num;
}
}
for(bef=head, j=0; j<st&&bef; j++, bef=bef->ptr);
for(loop=bef; loop&&loop->ptr!=pos&&k; k--, loop=loop->ptr);
if(bef) bef->ptr=pos;
st++;
}
jj* loop;
int strain=0;
int start=0, flag=0;
for(loop=head->ptr; loop&&strain<max; strain++, loop=loop->ptr){
if(!start&&loop->num=='0'){
continue;
}
if(!start&&loop->num!=0){
start++;
flag=1;
}
printf("%c", loop->num);
}
if(!flag) putchar('0');
return 0;
}
第7个点,是
10
1
0
我这里也能输出0
但是就是过不了