問題描述:回文串,是一種特殊的字串,它從左往右讀和從右往左讀是一樣的。小龍龍認為回文串
才是完美的。現在給你乙個串,它不一定是回文的,請你計算最少的交換次數使得該串變成乙個完美
的回文串。交換的定義是:交換兩個相鄰的字元,例如 mamad
第一次交換 ad : mamda
第二次交換 md : madma
第三次交換 ma : madam (回文!完美!)
輸入格式:第一行是乙個整數 n,表示接下來的字串的長度(n <= 8000)
第二行是乙個字串,長度為 n.只包含小寫字母
輸出格式:如果可能,輸出最少的交換次數。
否則輸出 impossible
樣例輸入
5mamad
樣例輸出
//*********************完美的代價
#include #include using namespace std;
int judge(char *c,int n) //judge函式用於判斷字串c是否能構成回文,不能返回-1,能則返回中間字元的資訊
,i=0,count_num=0,key=26;
for(i=0;i1)
key=-1;
return key;
}void with_center_word(char *c,int n,int key) //with_center_word函式用於計算並顯示有中間字元的字串c構成回文至少需要交換的次數
return 0;
}
完美的代價
問題描述 回文串,是一種特殊的字串,它從左往右讀和從右往左讀是一樣的。小龍龍認為回文串才是完美的。現在給你乙個串,它不一定是回文的,請你計算最少的交換次數使得該串變成乙個完美的回文串。交換的定義是 交換兩個相鄰的字元 例如mamad 第一次交換 ad mamda 第二次交換 md madma 第三次...
完美的代價
問題描述 回文串,是一種特殊的字串,它從左往右讀和從右往左讀是一樣的。小龍龍認為回文串才是完美的。現在給你乙個串,它不一定是回文的,請你計算最少的交換次數使得該串變成乙個完美的回文串。交換的定義是 交換兩個相鄰的字元。例如mamad 第一次交換 ad mamda 第二次交換 md madma 第三次...
完美的代價
資源限制 時間限制 1.0s 記憶體限制 512.0mb 問題描述 回文串,是一種特殊的字串,它從左往右讀和從右往左讀是一樣的。小龍龍認為回文串才是完美的。現在給你乙個串,它不一定是回文的,請你計算最少的交換次數使得該串變成乙個完美的回文串。交換的定義是 交換兩個相鄰的字元 例如mamad 第一次交...