思路(贪心):

1.两边往中间逼近,步数少;

2.单个字符出现时只考虑移动到中间的步数,不做移动,因为这是最后进行,不影响结果;

示例代码:

#include <stdio.h>
#define N 8000

int main(void)
{
  int n = 0 ;
  int i = 0 , j = 0 , k = 0 , flag = 0 , sign = 0 , sum = 0;
  char arr[N] ;

  scanf("%d",&n);
  scanf("%s",arr);

  k = n - 1 ; /*对称位置*/
  for (i = 0 ; i <= k ; i ++)
  {
    for (j = k ; j >= i ; j --)
    {

      /*出现单个字符*/
      if (i == j)
      {

        if (n%2 == 0 || sign)
        {
          flag ++;   /*第一次出现忽略*/ 
          break;
        }
        sign ++;   
        sum += n/2 - i;
        break;
      }

      /*匹配到的回文*/
      if (arr[i] == arr[j])
      {
        sum += k - j;
        while (j != k)
        {
          arr[j] = arr[j+1];
          j ++;
        }
        arr[j] = arr[i];
        k --;
        break;
      }
    }
    if (flag)
    {
      break;
    }
  }
  if (flag)
  {
    printf("Impossible");
  }
  else
  {
    printf("%d",sum);
  }

  return 0;
}

最新文章

  1. 在iis7上如何配置来看到asp报错
  2. wampserver-----------如何设置wampserver在windows下开机自动启动。
  3. iOS7.0适配问题
  4. Android 发布可穿戴设备 SDK 的开发者预览版
  5. iOS 自定义 shareSDK 容器
  6. homework-08 C++课程课后思考与练习
  7. 推荐几个JSON工具
  8. 通过CSS实现各种方向的三角形
  9. WebService学习总结
  10. PDF中的空白页面怎么删除,PDF页面删除技巧
  11. Helm - Kubernetes服务编排的利器
  12. idea配置git,查看git代码&amp;拉取git项目至本地
  13. [Laravel] 11 - WEB API : cache &amp; timer
  14. java打印条形码Code128C
  15. Day 12 作业.(完成)
  16. debian下配置双核cpu
  17. 在制MO未取到FP
  18. Java多线程——volatile关键字、发布和逸出
  19. 03-运行第一个docker容器
  20. Shift Operations on C

热门文章

  1. Redis (一) 概念安装
  2. delphi中使用MSWINSCK.OCX控件
  3. pyqt5 使用 QTimer, QThread, pyqtSignal 实现自动执行,多线程,自定义信号触发。
  4. Spring学习笔记之Container overview
  5. DevExpress Add ASPxGridView template columns at runtime
  6. STL标准库-仿函数与仿函数适配器
  7. js 的垃圾回收器 原理 坑 优化-- 待续
  8. Android开发入门要点记录:四大组件
  9. python opencv —— 背景提取(MOG、KNN)、识别与检测(Haar Cascade)
  10. SendTo MD5 - imsoft.cnblogs