問題描述
回文串,是一種特殊的字串,它從左往右讀和從右往左讀是一樣的。小龍龍認為回文串才是完美的。現在給你乙個串,它不一定是回文的,請你計算最少的交換次數使得該串變成乙個完美的回文串。輸入格式交換的定義是:交換兩個相鄰的字元。
例如mamad
第一次交換 ad : mamda
第二次交換 md : madma
第三次交換 ma : madam (回文!完美!)
第一行是乙個整數n,表示接下來的字串的長度(n <= 8000)輸出格式第二行是乙個字串,長度為n.只包含小寫字母
如果可能,輸出最少的交換次數。樣例輸入否則輸出impossible
5樣例輸出 思路:如果出現次數為奇數的字母大於等於2則該字元肯定不能構成回文串mamad
再假定前面幾位就是正確的字元 從後往前遍歷找到2個相同的字母時再進行交換,並加上需要交換的次數 再l–以此類推直到跳出迴圈
#include
using
namespace std;
intmain()
ans+
=n/2
-i; flag=
true;}
else
if(s[i]
==s[j]
) l--
;break;}
}}cout<}
完美的代價
問題描述 回文串,是一種特殊的字串,它從左往右讀和從右往左讀是一樣的。小龍龍認為回文串 才是完美的。現在給你乙個串,它不一定是回文的,請你計算最少的交換次數使得該串變成乙個完美 的回文串。交換的定義是 交換兩個相鄰的字元,例如 mamad 第一次交換 ad mamda 第二次交換 md madma ...
完美的代價
問題描述 回文串,是一種特殊的字串,它從左往右讀和從右往左讀是一樣的。小龍龍認為回文串才是完美的。現在給你乙個串,它不一定是回文的,請你計算最少的交換次數使得該串變成乙個完美的回文串。交換的定義是 交換兩個相鄰的字元 例如mamad 第一次交換 ad mamda 第二次交換 md madma 第三次...
完美的代價
資源限制 時間限制 1.0s 記憶體限制 512.0mb 問題描述 回文串,是一種特殊的字串,它從左往右讀和從右往左讀是一樣的。小龍龍認為回文串才是完美的。現在給你乙個串,它不一定是回文的,請你計算最少的交換次數使得該串變成乙個完美的回文串。交換的定義是 交換兩個相鄰的字元 例如mamad 第一次交...