题目大意:
题解:
这题我们发现是一个很显然的贪心:
从首位开始向后搞,每次将后面能挪过来的最大的挪过来即可
注意下挪过来的过程中,挪的那个数是放在这一位的前面,其他是不变的,
一开始我把i和要变换过来的第j位对调了....
时间复杂度:O(TN^2)
代码:
var
rp,i,j,k,l,t:longint;
s:string;
w:char;
begin
assign(input,'swap.in'); reset(input);
assign(output,'swap.out'); rewrite(output);
readln(t);
for rp:=1 to t do
begin
read(w);
s:='';
while w<>' ' do
begin
s:=s+w;
read(w);
end;
read(k);
for i:=1 to length(s)-1 do
begin
w:=s[i];
j:=0;
l:=0;
while (j<k) and (i+j+1<=length(s)) do
begin
inc(j);
if s[i+j]>w then
begin
w:=s[i+j];
l:=j;
end;
end;
if l<>0 then
begin
delete(s,i+l,1);
insert(w,s,i);
k:=k-l;
end;
end;
readln;
writeln(s);
end;
close(input); close(output);
end.