poj3617

本文地址: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 }
View Code
相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息