字典序最小问题(贪心)


挑战程序竞赛2.3.3



#include <iostream>
#include <cstdio>
using namespace std;

const int MAX_N=2000;
int N;
char S[MAX_N+1];

void solve()
{
     bool left=true;
     int a=0, b=N-1;
     while(a<=b)
     {
         for(int i=0; a+i<=b;i++)
         {
             if(S[a+i]<S[b-i])
             {
                 left=true;
                 break;
             }
             if(S[a+i]>S[b-i])
             {
                 left=false;
                 break;
             }
         }
         if(left) putchar(S[a++]);
         else putchar(S[b--]);
     }
     putchar(' ');

}


int main()
{
     scanf("%d %s", &N, S);
     solve();
     return 0;
}

原文地址:https://www.cnblogs.com/cute/p/14758595.html