本文地址:http://www.javashuo.com/article/p-pfcaajyv-bp.htmlhtml
题目名称:Best Cow Lineide
连接:http://poj.org/problem?id=3617spa
题意:有一个竞赛,FJ计划把他的原先牛的队列变成字典序最小的串。规则是依次把原先牛队列的头部或者尾部放到新串队列的尾部。code
思路:贪心,开始想到咱们每次把牛头部和尾部比较小的丢到新队列。然而这样若是头尾相同的话就要考虑接下去第二个字符的大小,依次类推。碰到哪边比较小的就得拿哪边的,相同就均可以。输出按每行 80 头输出 (注意!)。htm
代码以下:blog
1 #include<cstdio>
2 using namespace std; 3 char str[2005]; 4 int main() { 5 int n; 6 scanf("%d", &n); 7 for(int i = 1; i <= n; ++i){ 8 getchar(); 9 scanf("%c", &str[i]); 10 } 11 int a = 1, b = n, ans = 0; 12 while(a <= b) { 13 bool left = false; 14 for(int i = 0; i <= (b - a) / 2; ++i) { 15 if(str[a + i] < str[b - i]) { 16 left = true; break; 17 } 18 else if(str[a + i] > str[b - i]) { 19 left = false; break; 20 } 21 } 22 if(left) putchar(str[a++]); 23 else putchar(str[b--]); 24 ans++; 25 if(ans % 80 == 0) 26 puts(""); 27 } 28 puts(""); 29 return 0; 30 }