poj3617解題報告

2021-07-31 01:31:08 字數 595 閱讀 1182

題意:輸入乙個整數n,後面跟著n行大寫字母,現要求對這些字母進行排序,要求字典序最小,每80個字母一行且字母只能從兩端任取乙個。

根據上面的資訊我們不難想到若使字典序最小則只需從兩端選取最小的字母即可。不過聰明的讀者也一定注意到了,如果兩個字母大小一樣怎麼辦?沒關係,我們繼續往裡找就可以了。如果左邊的字母最先出現小的則選左邊的,反之亦然。當所有字母一樣大小也即對稱時任選乙個即可。

如此寫出使用貪心的ac** memory 204k 16ms

#include#include#include#includeusing namespace std;

const int maxn=2000+10;

int main()

i++;

}if(left) putchar(s[l++]);

else putchar(s[r--]);

ans++;

if(ans%80==0) putchar('\n');

}if(ans%80) putchar('\n');

return 0;

}

字典序最小問題(POJ3617)

題目大意 給定長度為n的字串s,要構造乙個長度為n的字串t。起初,t是乙個空串,隨後反覆進行下列任意操作。從s的頭部刪除乙個字元,加到t的尾部 從s的尾部刪除乙個字元,加到t的尾部 目標是構造字典序盡可能小的字串。輸入 6 acdbcb 輸出abcbcd 解題思路 這道題我們很容易想到,不斷取開頭或...

poj 3617字典序最小 貪心

思路 定義乙個標記位left 表示是否輸出的左邊的字元 逐個比較首尾 0與n比 1與n 1比較 2與n 2比較.每當滿足比較條件 即兩個字元不相同,一大一小 就給標記位標記上,最後根據標記位的值進行輸出,切記每行滿80字元要換行 pe所在 ac include include include inc...

poj3617字典序最小問題 貪心

題目大意 給定長度為n的字串s,要構造乙個長度為n的字串t。構造方法為 從s頭部刪除乙個字元,加到t的尾部 從s尾部刪除乙個字元,加到t的尾部 解題思路 是一道貪心的水題,但也有值得學習的地方。程式設計技巧上,使用的方法比較獨特,每次都要搜尋一次,時間複雜度會高一點,但這道題怎麼寫肯定都不會超時,所...