#include <bits/stdc++.h> using namespace std; int n,flag=0,cnt=0; string s; int main() { scanf("%d",&n); cin>>s; int last=n-1; for(int i=0;i<last;i++)//检索范围:第一个元素开始~倒数第二个元素 for(int j=last;j>=i;j--){//从最后一个元素开始找与第i个元素匹配的元素 if(i==j){ if(flag==1||n%2==0){ printf("Impossible\n"); return 0;}//不能形成回文串的情况:①字符串长度为偶数,出现了奇数个数的字母 ②出现了多于一个的奇数个数的字母 flag=1; cnt+=n/2-i;}//将奇数个数的字母移到最中间 else if(s[i]==s[j]){//找到与第i个字母相同的字母j for(int k=j;k<last;k++){//将字母j换到当前的最后位置(last) swap(s[k],s[k+1]); cnt++;} last--; break;} } cout<<cnt<<endl; }
蓝桥杯 完美的代价(字符串,贪心)
猜你喜欢
转载自www.cnblogs.com/frente/p/10574373.html
今日推荐
周排行