// greedy 貪心算法
// 貪心算法是求當前最優解
// 題目:輸入一個整數,然後在輸入N長度的字符串,每次從字符串開頭或者末尾取一個字母,
// 組成新的字符串,組成字符串的字典序最小
// 例:輸入:6
// ACDBCB
// 輸出: ABCBCD
#include <iostream>
using namespace std;
int main()
{
int N;
while(cin >> N && N)
{
char str[N + 1];
cin >> str;
int a = 0, b = N - 1;
while(a <= b)
{
bool left = false;
for(int i = 0; a + i <= b; i++)
{
if(str[a + i] < str[b - i])
{
left = true;
break;
}
else if(str[a + i] > str[b - i])
{
left = false;
break;
}
}
if(left)
cout << str[a++];
else
cout << str[b--];
}
}
return 0;
}
// 思路:比較兩邊的字典序大小,哪邊小就取哪邊
// 如果開頭與末尾相同的話,就將字符串str與其反序比較,當比較到有一個小的時候,就選那個
// 如果相同則無所謂取哪一個
字典序最小問題--貪心入門
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.