首先看到这道题会想到贪心 每次取前面一个字符或者后面一个字符
但是会发现当前面和后面相等的时候就不好取了
如果相等,如果现在取的下一个字符比较小,就可以和他相对的字符组合
就可以比较下一个字符然后去小的
这道题 题目 容易忽略 每80个换行
在这个for(int i=0;left+i<=right ;i++ )
中left+i<=right 其实也就是取到 left和right中间的字符
wrong 了很多次。。。。。。。。。。。
#include<stdio.h>
int main()
{
int n;
char str[4000];
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
{
scanf("\n%c",&str[i]);
}
int left=0;
int right=n-1;
int hehe=0;
while(left<=right)
{
bool inf=false;
for(int i=0;left+i<=right ;i++ )
{
if(str[left+i]<str[right-i])
{
inf=true;
break;
}
else if(str[left+i]>str[right-i])
{
inf=false;
break;
}
}
if(!inf)
{
printf("%c",str[right]);
right--;
}
else
{
printf("%c",str[left]);
left++;
}
hehe++;
if(hehe==80)
{
putchar('\n');hehe=0;
}
}
putchar('\n');
}
return 0;
}