給定長度為n的字串s,要構造乙個長度為n的字串t。起初,t是乙個空串,隨後反覆進行下列任意操作。
1. 從s的頭部刪除乙個字元,加到t的尾部。
2. 從s的尾部刪除乙個字元,加到t的尾部
第一行輸入一行字串
輸出字串t
acdbcb
abcbcd
此題用貪心法,從頭或者尾選乙個較小的。
比較頭尾的二個字元大小,將加的移除到t中,如果相等,則進行下乙個字元判斷,直到發現有大小不同的,如果全相同,則無論移除的是頭還是尾都一樣。
#include
#include
#include
using
namespace
std;
int main() else
if (str[head + i] > str[tail - i])
}if (left) else
}cout
<< is.str() << endl;
return
0;}
poj3617字典序最小問題 貪心
題目大意 給定長度為n的字串s,要構造乙個長度為n的字串t。構造方法為 從s頭部刪除乙個字元,加到t的尾部 從s尾部刪除乙個字元,加到t的尾部 解題思路 是一道貪心的水題,但也有值得學習的地方。程式設計技巧上,使用的方法比較獨特,每次都要搜尋一次,時間複雜度會高一點,但這道題怎麼寫肯定都不會超時,所...
貪心 字典序最小問題
貪心 字典序最小問題 題目大意 給你乙個長為n的字串s,並提供下列2種操作 讓你構造出字典序最小的字串t 思路 因為每次我們能直接考慮的只有s的首尾字母,所以每次新增到t中的不是第乙個就是最後那乙個,沒有別的方法,並且都是新增到t的末尾 根據字典序的定義,越靠前的字母越小,則字典序越小,所以我們每次...
字典序最小問題(貪心)
題目大意 輸入n,代表有乙個長度為n的字串。起初,t是乙個空串,隨後反覆進行下列任意操作 從s 的頭部刪除乙個字元,加入到t的尾部 從s的尾部刪除乙個字元,加入到t的尾部 目的是構造字典序盡可能小的字串t 限制條件 1 n 2000,每個字串只包含大寫字母 思路 這題主要要知道當前後一樣時該選哪個,...