问题描述
  回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。
现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。
  交换的定义是:交换两个相邻的字符
  例如mamad
  第一次交换 ad : mamda
  第二次交换 md : madma
  第三次交换 ma : madam (回文!完美!)
输入格式
  第一行是一个整数N,表示接下来的字符串的长度(N <= 8000)
  第二行是一个字符串,长度为N.只包含小写字母
输出格式
  如果可能,输出最少的交换次数。
  否则输出Impossible
样例输入
5
mamad
样例输出
3

分析:

贪心思想,以最左边的第一个字母L为基础,从最右边R往左依次寻找与其相同的字母,找到后就从左往右一直交换过去

L++,R--,一直重复这样的思路,直到L>R

代码:

 #include<iostream>
#include<cstdio>
using namespace std;
const int MAX_N = +;
int n;
char s[MAX_N];
void solve() {
int a = , b = n-;
int ans = ;
bool flag = true;
while(a < b) {
int c = b;
while(s[c] != s[a] && c > a) { c--; }
if(c == a) { flag = false; break; }
else for(int i = c; i < b; i++) {
swap(s[i], s[i+]);
ans++;
}
a++; b--;
}
if(flag) printf("%d", ans);
else printf("Impossible\n");
}
int main() {
while(scanf("%d", &n) == ) {
scanf("%s", s);
solve();
}
return ;
}

蓝桥杯—BASIC-19 完美的代价(贪心)的更多相关文章

  1. 蓝桥杯 BASIC 24 龟兔赛跑预測(模拟)

    [思路]:模拟.注意一个是在兔子歇息的时间乌龟可能到达了.刚開始没考虑WA80%. [AC代码]: #include <iostream> #include <algorithm&g ...

  2. 蓝桥杯 BASIC 29 高精度加法(大数)

    [思路]:大数处理都一样. [AC代码]:代码细节能够美化一下. #include <iostream> #include <algorithm> #include <c ...

  3. 蓝桥杯 BASIC 27 矩阵乘法(矩阵、二维数组)

    [思路]:注意0次幂是单位矩阵. [AC代码]: #include <iostream> #include <algorithm> #include <iomanip&g ...

  4. 蓝桥杯 ALGO-2:最大最小公倍数

      算法训练 最大最小公倍数   时间限制:1.0s   内存限制:256.0MB        锦囊1 使用贪心来选择. 锦囊2 当n为奇数时,答案一定是n*(n-1)*(n-2). 当n为偶数时, ...

  5. Java实现 蓝桥杯VIP 基础练习 完美的代价

    package 蓝桥杯VIP; import java.util.Scanner; public class 完美的代价 { public static int sum = 0; public sta ...

  6. 蓝桥杯 基础练习 BASIC-19 完美的代价

    基础练习 完美的代价   时间限制:1.0s   内存限制:512.0MB 问题描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的.小龙龙认为回文串才是完美的.现在给你一个串,它不一定 ...

  7. 计蒜客蓝桥杯模拟赛 后缀字符串:STL_map+贪心

    问题描述 一天蒜头君得到 n 个字符串 si​,每个字符串的长度都不超过 10. 蒜头君在想,在这 n 个字符串中,以 si​ 为后缀的字符串有多少个呢? 输入格式 第一行输入一个整数 n. 接下来  ...

  8. 2019第十届蓝桥杯C++B组题解(赛后重写的,不确保答案正确性,仅供参考)

    先说一下这次的感受吧,我们考场比较乱,开始比赛了,还有的电脑有故障,(向这些人发出同情),第一次认真参加比赛,真正比赛的时候感觉没有那么正式,很乱,各种小问题,(例如博主就没找到题目在哪里,找到后又不 ...

  9. 2015年蓝桥杯B组C/C++决赛题解

    2015年第六届蓝桥杯B组C/C++决赛题解 点击查看2015年第六届蓝桥杯B组C/C++国赛题目(不含答案)     1.积分之迷 三重循环 枚举A,B,C的值,如果满足两个条件:3个A + 7个B ...

随机推荐

  1. Spring官网下载各版本jar包

    1:浏览器输入官网地址:http://spring.io/projects 2:点击如图树叶页面按钮.  3:点击如图小猫图片按钮.  4:查找downloading spring artifacts ...

  2. 算法笔记--斜率优化dp

    斜率优化是单调队列优化的推广 用单调队列维护递增的斜率 参考:https://www.cnblogs.com/ka200812/archive/2012/08/03/2621345.html 以例1举 ...

  3. python 读写TXT,安装pandas模块。

    今天需要用python读TXT 文件,发现pandas库好用,所以就去下载,没想pythoncharm中的setting中下载失败,所以去下源文件,安装pandas 是提示得先装numpy库,于是又去 ...

  4. HeadFIrst Ruby 第七章总结 hashes

    前言 这一章节介绍了 Ruby 中 hash 这一数据类型的用法和特征. Hash 的定义 与 array 的对比 最大的不同: An array can only use integers as i ...

  5. [转] @JoinColumn 详解 (javax.persistence.JoinColumn)

    原文链接:@JoinColumn详解  原文标的也是转载,但是没有注明原文链接,看起来乱乱的,所以整理一下转载过来,顺便细看一下 1. 一对一 现假设有Person表和Address表,是一对一的关系 ...

  6. wpf 使用DocumentViewer打印

    https://blog.csdn.net/duanzi_peng/article/details/14118937?locationNum=15 https://www.cnblogs.com/zl ...

  7. catalan 递推

    http://www.cnblogs.com/zyt1253679098/p/9190217.html

  8. Confluence 6 修改一个空间从归档到当前

    通过空间目录: 进入头部的 空间(Spaces ) > 空间目录(Space directory). 在左侧 选择 归档的空间(Archived Spaces). 找到你的空间,然后单击右侧的  ...

  9. 进程锁,队列,JoinableQueue

    内容梗概: 1.进程同步(锁) 2.队列(重点) 3.生产者消费者模式 4.JoinableQueue([maxsize]) 5.信号量(了解) 6.事件 1.进程同步(锁) 并发编程让我们能更加充分 ...

  10. layui 导出表格数据

    第一种方法没试过,有机会要试试.