思路:根据题意需要对字符串S前后反复比较,输出较小的字符就行了
值得注意的是当前后相同的时候,就需要小心了
例如:字符串是S={A,E,D,A,D,C,E,B}则需要比较下一位的大小了
如果前后两位都相同,也可以同等处理。
代码如下:
#include <iostream>
#include <cstdio>
using namespace std;
int n,M,j=0,x=0,y=0;
void fun(char a[])
{
if(a[n]==a[M])
{
printf("%c",a[M]);
n++;
M--;
j=1;
fun(a);
}
else
{
if(a[n]>a[M])
{
printf("%c",a[M]);
x=1;
M--;
}
else
{
printf("%c",a[n]);
n++;
y=1;
}
}
if(j==1&&y==1)
{
n--;
j=0;
y=0;
}
if(j==1&&x==1)
{
M++;
j=0;
x=0;
}
}
int main()
{
int N;
char a[1005];
scanf("%d %s",&N,a);
for(n=0,M=N-1;M!=n;)
fun(a);
printf("%c\n",a[M]);
return 0;
}
有一些简单粗暴.