题目链接:http://poj.org/problem?id=3617
题目大意:从一个字符串的头或者尾中找一个比较小的接到另一个新的字符串的末尾。
greedy
注意:当原来字符串的头和尾相同是要继续往里面比较,如果还是相同继续往里面比较......知道找到不同的,而不是输出末尾。
#include<iostream>
using namespace std;
char str[2005];
bool cmp(int a,int b)
{
for(;a<b&&str[a]==str[b];)a++,b--;
if(str[a]>str[b])
return false;
return true;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
getchar();
int a,b,t=0;
a=0,b=n-1;
for(a=0;a<n;a++)
{
scanf("%c",&str[a]);
getchar();
}
a=0;
while(a<=b)
{
if(cmp(a,b))
{
putchar(str[a++]);
t++;
if(t==80) {printf("\n");t=0;}
}
else
{
putchar(str[b--]);
t++;
if(t==80) {printf("\n");t=0;}//forget to initialize :t=0 =_=!
}
}
printf("\n");
memset(str,0,sizeof(str));
}
return 0;
}