演算法複習 貪心 完美的代價

2021-09-11 08:12:20 字數 1024 閱讀 2579

問題描述

回文串,是一種特殊的字串,它從左往右讀和從右往左讀是一樣的。小龍龍認為回文串才是完美的。現在給你乙個串,它不一定是回文的,請你計算最少的交換次數使得該串變成乙個完美的回文串。

交換的定義是:交換兩個相鄰的字元

例如mamad

第一次交換 ad : mamda

第二次交換 md : madma

第三次交換 ma : madam (回文!完美!)

輸入格式

第一行是乙個整數n,表示接下來的字串的長度(n <= 8000)

第二行是乙個字串,長度為n.只包含小寫字母

輸出格式

如果可能,輸出最少的交換次數。

否則輸出impossible

樣例輸入

5mamad

樣例輸出

#include using namespace std;

int main()

;cin >> s;

int dictionary[26] = ;

int i;

int odd = 0;

char oddchar='/0';

for (i = 0; i < n; i++)

for (i = 0; i < 26; i++)

}if (odd > 1)cout << "impossible" << endl;

else

change += j - i;

for (int k = j; k > i; k--)

s[k] = s[k - 1];

s[i] = s[n - 1 - i];

}else

change += n - 1 - i - j;

for (int k = j; k < n - 1 - i; k++)s[k] = s[k + 1];

s[n - 1 - i] = s[i];}}

cout << change << endl;

}return 0;

}

藍橋杯 完美的代價 貪心

問題描述 回文串,是一種特殊的字串,它從左往右讀和從右往左讀是一樣的。小龍龍認為回文串才是完美的。現在給你乙個串,它不一定是回文的,請你計算最少的交換次數使得該串變成乙個完美的回文串。交換的定義是 交換兩個相鄰的字元 例如mamad 第一次交換 ad mamda 第二次交換 md madma 第三次...

基礎練習 完美的代價(貪心)

description 回文串,是一種特殊的字串,它從左往右讀和從右往左讀是一樣的。小龍龍認為回文串才是完美的。現在給你乙個串,它不一定是回文的,請你計算最少的交換次數使得該串變成乙個完美的回文串。交換的定義是 交換兩個相鄰的字元 例如mamad 第一次交換 ad mamda 第二次交換 md ma...

藍橋杯 完美的代價(貪心演算法)

基礎練習 完美的代價 時間限制 1.0s 記憶體限制 512.0mb 問題描述 回文串,是一種特殊的字串,它從左往右讀和從右往左讀是一樣的。小龍龍認為回文串才是完美的。現在給你乙個串,它不一定是回文的,請你計算最少的交換次數使得該串變成乙個完美的回文串。交換的定義是 交換兩個相鄰的字元 例如mama...