【貪心】POJ 3617:Best Cow Line

szy_fasheng發表於2020-10-03

一、題目內容

POJ 3617 原題地址

二、題意解釋

給定一個字串,重排,每次從頭或尾取較小值放到新序列的末尾。
題目要求是每80個為一行輸出。

三、程式碼及註釋

#include<cstdio>
using namespace std;
int n;
char S[2001];
int main()
{
    scanf("%d",&n);
    for(int j=0; j<n; j++)
    {
        scanf(" %c",&S[j]);
    }
    int l=0;
    int r=n-1;
    int ans=0;
    while(l<=r)
    {
        bool left=false;
        //不能簡單的每次首尾比較取最小值,如果相等還需要繼續看下一個要比較的對兒那個更小。
        for(int i=0; l+i<=r; i++)
        {
            if(S[l+i]<S[r-i])
            {
                left=true;
                break;
            }
            else if(S[l+i]>S[r-i])
            {
                left=false;
                break;
            }
        }
        if(left) putchar(S[l++]);
        else putchar(S[r--]);
        ans++;
        if(ans%80==0) putchar('\n');//每80個換一行
    }
    putchar('\n');
    return 0;
}

相關文章