题目链接:点击打开链接
贪心策略为不断检测串S的首尾元素,选取小的一方输出
当然如果两端相等就判断下一个,一直到两端相遇,此时默认输出左边(反正都一样)
当然有一个每行80个字符的坑(日常PE
AC代码如下:
#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
int main()
{
vector<char> S;
int N;
while(cin>>N)
{
S.clear();
for(int i=1; i<=N; ++i)
{
char c;
cin>>c;
S.push_back(c);
}
int head = 0, nail = N-1;
vector<char> T;
T.clear();
while(head<=nail)
{
int flag = 1;
for(int i=0; head+i<=nail; ++i)
{
if(S[head+i]<S[nail-i]) { flag=1; break; }
else if(S[head+i]>S[nail-i]) { flag=0; break;}
}
if(flag) T.push_back(S[head++]);
else T.push_back(S[nail--]);
}
for(int i=1;i<=N;++i)
{
if(i%80==0) cout<<T[i-1]<<endl;
else cout<<T[i-1];
}
cout<<'\n';
}
return 0;
}