博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
蓝桥杯练习 完美的代价(回文)(贪心)
阅读量:6567 次
发布时间:2019-06-24

本文共 1355 字,大约阅读时间需要 4 分钟。

完美的代价

发布时间: 2017年1月21日 20:31   时间限制: 1000ms   内存限制: 128M

描述

回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。

小龙龙认为回文串才是完美的。

现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。 

交换的定义是:交换两个相邻的字符 

例如mamad 

第一次交换 ad : mamda 

第二次交换 md : madma 

第三次交换 ma : madam (回文!完美!) 

输入

第一行是一个整数N,表示接下来的字符串的长度(N <= 8000)

第二行是一个字符串,长度为N.只包含小写字母

输出

如果可能,输出最少的交换次数。

否则输出Impossible

样例输入1 
5mamad
样例输出1
3 贪心:
#include 
int main(){ int n; while (~scanf("%d", &n)) { char s[8010]; scanf("%s", s); int flag = 0, ct = 0; int border = n - 1; for (int i = 0; i < border; i++) { for (int j = border; j >= 0; j--) { if (j == i) { flag++; if (n % 2 == 0 || flag > 1) { printf("Impossible\n"); goto end; } ct += n / 2 - i; break; } else if (s[i] == s[j]) { ct += border - j; for (int k = j; k < border; k++) { s[k] = s[k + 1]; } s[border] = s[i]; border--; break; } } } printf("%d\n", ct); end:continue; } return 0;}

转载于:https://www.cnblogs.com/ray-coding-in-rays/p/6343193.html

你可能感兴趣的文章
改变,起点
查看>>
Use PowerShell to Replace netdom Commands to Join the Domain
查看>>
模拟实现常用字符串函数
查看>>
关于ping telnet
查看>>
Java 并发编程中使用 ReentrantLock 替代 synchronized 关键字原语
查看>>
Docker私有仓库
查看>>
PHP 自己实现var_dump函数
查看>>
javascript:document的属性和方法,title,innerHTML,
查看>>
java课程第七天,匿名内部类以及异常处理
查看>>
LoRa协议加密
查看>>
Mozilla新特性只支持https网站
查看>>
MUI框架 APP手机退出方式
查看>>
puppet (三)
查看>>
DNS学习笔记
查看>>
函数重载(续)==》函数重载和函数指针在一起
查看>>
springmvc+spring+mybatis+maven项目集成shiro进行用户权限控制【转】
查看>>
文件处理及分区管理
查看>>
不知道这些肯定没学过Go语言
查看>>
Python学习笔记__6.1章 类和实例
查看>>
爱创课堂每日一题八十九天- CSS中link和@import的区别是:
查看>>