POJ 3617 Best Cow Line [贪心] 《挑战程序设计竞赛》2.2

来源:互联网 发布:汉朝皇帝知乎 编辑:程序博客网 时间:2024/06/06 04:05
#include <iostream>#include <cstdio>#define MAX_N 2005using namespace std;int N;char S[MAX_N];void solve(){    int a = 0, b = N-1;    int cnt = 0;    while(a <= b)    {        bool left = false;        for(int i = 0; a+i < b; i++)        {            if(S[a + i] < S[b - i])            {left = true; break;}            else if(S[a + i] > S[b - i])            {left = false; break;}        }        if(left)    putchar(S[a++]);        else putchar(S[b--]);        if(!(++cnt%80)) putchar('\n');    }    putchar('\n');}int main(){    cin >> N;    int i = N ;    for(int i = 0; i < N; i++)        cin >> S[i];    solve();    return 0;}

每次选取头部或者尾部较小的字符.
如果头尾字符相等,不能随便选择,需要选择下一个位置较小的那个. 比如CDBC, 应选择尾部的C,这样就可以尽早的使用B,而不是D.
如果下一个位置也相等,则以此类推.

需要注意的是, 题目要求一行只能有80个字符.由于英语不好粗心Presentation Error了好几次…

原创粉丝点击