jzoj P4310 最优交换___枚举+贪心

206 篇文章 0 订阅
45 篇文章 0 订阅

题目大意:

这里写图片描述
这里写图片描述

题解:

这题我们发现是一个很显然的贪心:
从首位开始向后搞,每次将后面能挪过来的最大的挪过来即可
注意下挪过来的过程中,挪的那个数是放在这一位的前面,其他是不变的,
一开始我把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.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值