传送门

题意就是说每次都可以从字符串的首部或者尾部提取字母,使得最后的字符串的字典序最小。

按照字典序比较S和将S反转后的字符串S’

如果S比较小,就从S的开头取出一个字母,追加到T的末尾。反之,则从S开头取出一个字母,加到末尾。

代码如下:

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
    int n;
    char x[2010];
    cin >> n;
    for(int i = 0;i < n; i++)
    {
        getchar();
        scanf("%c",&x[i]);
    }
    int a = 0,b = n - 1,index = 0;
    while(a <= b)
    {
        int left = 0;
        for(int i = 0;a + i <= b; i++)
        {
            if(x[a + i] < x[b - i])
            {
                left = 1;
                break;
            }
            else if(x[a + i] > x[b - i])
            {
                left = 0;
                break;
            }
        }
        if(left)
        {
            putchar(x[a++]);
            index++;
        }
        else
        {
            putchar(x[b--]);
            index++;
        }
        if(index == 80)
        {
            putchar('\n');
            index = 0;
        }
    }
    return 0;
}