本文地址: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 }