字典序最小问题

来源:互联网 发布:android网络状态监听 编辑:程序博客网 时间:2024/05/22 18:22
给定长度为N的字符串s,要构造一个长度为N的字符串T。起初,T 是一个空串,随后反复进行下列 任意 操作。(1)从 s 的头部 删除一个 字符,加到 T的 尾部(2)从 s 的尾部 删除一个 字符,加到 T 的 尾部   你的 目标是 要构造字典序尽可能小的字符串 T。(s 只包含大写英文字母)输入10ASDFCBDBCA输出AACBDBCFDS#include<stdio.h>char s[2000 + 10];int main(){    int N;    scanf("%d",&N);    getchar();    for(int i = 0; i < N; i++)        scanf("%c",&s[i]);    int a = 0, b = N - 1;    while(a <= b)    {        // 将从左起和从右起的字符串比较        bool left = false;        for(int i = 0; a + i <= b; i++)        {            if(s[a + i] < s[b - i])            {                left = true;                break;            }            else if(s[a + i] > s[b - i])            {                left = false;                break;            }        }        if(left)  putchar(s[a++]);        else putchar(s[b--]);    }    putchar('\n');}

1 0
原创粉丝点击