现在的位置: 首页 > 综合 > 正文

poj3617

2018年04月26日 ⁄ 综合 ⁄ 共 551字 ⁄ 字号 评论关闭

【题意】

一个长度为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.
【上篇】
【下篇】

抱歉!评论已关闭.