国产探花免费观看_亚洲丰满少妇自慰呻吟_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;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 任丘市| 临沭县| 泾源县| 鹤峰县| 黄大仙区| 南川市| 阿克陶县| 枣强县| 屏边| 东山县| 曲水县| 廊坊市| 砀山县| 绥棱县| 砀山县| 潼关县| 合作市| 吴旗县| 莱西市| 松原市| 班戈县| 上高县| 新营市| 凭祥市| 克东县| 广宁县| 唐山市| 达州市| 克拉玛依市| 莱芜市| 边坝县| 新晃| 且末县| 南皮县| 喜德县| 贵州省| 萝北县| 偃师市| 房产| 新乡市| 保靖县|