数据很水,我有问题的代码交了都能过。
但是依然可能卡人,如果你出现了手误。
O(10n)
#include<cstdio>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxn = 1010;
char str[maxn];
int len;
int M;
int k;
bool change()
{
int kk=k;
while(k<len)
{
for(int i=k+1;i<len;i++)
if((k&&str[i]<=str[kk])||(!k&&str[i]!='0'&&str[i]<=str[kk])) kk=i;
if(str[kk]==str[k])
{
kk=k;
if(k==0) kk++;
else while(kk<len&&str[kk]<=str[k]) kk++;
k=kk;
continue;
}
swap(str[k],str[kk]);
return true;
}
return false;
}
void solve()
{
k=0;
scanf("%s %d",str,&M);
len=strlen(str);
while(M--&&change());
printf("%s\n",str);
}
int main()
{
int T;
scanf("%d",&T);
while(T--) solve();
return 0;
}