基础练习 完美的代价
来源:互联网 发布:飞行器控制用什么编程 编辑:程序博客网 时间:2024/05/22 13:17
问题描述
回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。
交换的定义是:交换两个相邻的字符
例如mamad
第一次交换 ad : mamda
第二次交换 md : madma
第三次交换 ma : madam (回文!完美!)
交换的定义是:交换两个相邻的字符
例如mamad
第一次交换 ad : mamda
第二次交换 md : madma
第三次交换 ma : madam (回文!完美!)
输入格式
第一行是一个整数N,表示接下来的字符串的长度(N <= 8000)
第二行是一个字符串,长度为N.只包含小写字母
第二行是一个字符串,长度为N.只包含小写字母
输出格式
如果可能,输出最少的交换次数。
否则输出Impossible
否则输出Impossible
样例输入
5
mamad
mamad
样例输出
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;}
0 0
- 基础练习 完美的代价
- 基础练习 完美的代价
- 基础练习 完美的代价
- 基础练习 完美的代价
- 基础练习 完美的代价
- 基础练习 完美的代价
- 基础练习 完美的代价
- 基础练习 完美的代价
- 蓝桥杯 基础练习 完美的代价
- 蓝桥网 基础练习 完美的代价
- 基础练习 BASIC-19 完美的代价
- 蓝桥杯练习系统:基础练习 完美的代价
- 蓝桥杯 BASIC-19 基础练习 完美的代价
- 蓝桥杯 BASIC-19 基础练习 完美的代价 Java版
- 基础练习 完美的代价(蓝桥杯 字符串问题)
- 蓝桥杯 基础练习 完美的代价 【贪心 + string】
- 蓝桥杯练习(vip) 完美的代价
- 完美的代价解答
- 三得公益人人公益模式系统开发源码
- zabbix 3.2 server web展示如何显示中文
- 贪心算法--PAT.A1037.Magic Coupon
- 详解Java注解( Annotation )
- swift中返回值是函数
- 基础练习 完美的代价
- JSP过滤器Filter配置过滤类型汇总
- [Leetcode] #215 Kth Largest Element in an Array
- php中如何把多行文本框textarea提交上来的数据按照回车换行拆分成数组
- angular js和一些个人总结小技巧
- Java String Split 方法小记录-源代码分析
- HDU 2086 A1 = 杭电acm
- 文件上传--测试用例
- 2017年android面试总结