国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

基礎練習 完美的代價

2019-11-08 02:46:57
字體:
來源:轉載
供稿:網友

問題描述  回文串,是一種特殊的字符串,它從左往右讀和從右往左讀是一樣的。小龍龍認為回文串才是完美的。現在給你一個串,它不一定是回文的,請你計算最少的交換次數使得該串變成一個完美的回文串。  交換的定義是:交換兩個相鄰的字符  例如mamad  第一次交換 ad : mamda  第二次交換 md : madma  第三次交換 ma : madam (回文!完美!)輸入格式  第一行是一個整數N,表示接下來的字符串的長度(N <= 8000)  第二行是一個字符串,長度為N.只包含小寫字母輸出格式  如果可能,輸出最少的交換次數。  否則輸出Impossible樣例輸入5mamad樣例輸出3

解答代碼

#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algorithm>using namespace std;int main(){	int i,k,n,flag=0,ans=0,pos;	cin>>n;	getchar();	char *s=(char *)malloc(sizeof(char)*n);	gets(s);	int end=n-1;	pos=0;	for(i=0;i<end;i++)	{		for(k=end;k>=0;k--)		{			if(k==i)			{				flag++;				if(n%2==0 || flag>1)				{					cout<<"Impossible"<<endl;					return 0;				}				pos=n/2-i;				break;			}			else if(s[k]==s[i])			{				ans+=end-k;				for(int index=k;index<end;index++)					s[index]=s[index+1];				s[end]=s[i];				end--;				break;			}		}	}	cout<<ans+pos<<endl;	return 0;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 义乌市| 泰顺县| 西乌| 大同县| 儋州市| 北宁市| 滕州市| 霍山县| 齐齐哈尔市| 新竹县| 大兴区| 青海省| 乐陵市| 和田市| 桐庐县| 金秀| 平塘县| 隆昌县| 万荣县| 苏尼特右旗| 垦利县| 鹤峰县| 海晏县| 苍山县| 白沙| 成武县| 崇礼县| 屏南县| 赣榆县| 喀喇沁旗| 棋牌| 蓬溪县| 灵台县| 洛宁县| 遂川县| 奉新县| 富源县| 景洪市| 洞口县| 清河县| 黄陵县|