poj3617

【题意】

一个长度为N(N<=1000)的字符串,每次可以从队尾或队首拿出一个字符加入到新字符串队尾,求字典序最小的新字符串

【输入】

第一行一个N

接下来N行每行一个大写字母

【输出】

字典序最小的新字符串


贪心

需要注意的是如果用字符串的长度最长为1000,所以要用ansistring


program poj3617;
var
  n,i,j,k:longint;
  ans,s1,s2:ansistring;
  temp:char;
begin
  readln(n);
  s1:='';
  for i:=1 to n do
    begin
      readln(temp);
      s1:=s1+temp;
    end;
  s2:='';
  for i:=1 to n do
    s2:=s2+s1[n-i+1];
  ans:='';
  for i:=1 to n do
    if (s1<>'')and((s2='')or(s1<s2)) then
      begin
        ans:=ans+s1[1];
        delete(s1,1,1);
        delete(s2,length(s2),1);
      end
                                     else
      begin
        ans:=ans+s2[1];
        delete(s2,1,1);
        delete(s1,length(s1),1);
      end;
  for i:=1 to n do
    begin
      write(ans[i]);
      if i mod 80 = 0 then writeln;
    end;
end.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值