• 81 完美的代价


    81 完美的代价

    作者: Turbo时间限制: 1S章节: 其它

    问题描述 :

      回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。
      交换的定义是:交换两个相邻的字符
      例如mamad
      第一次交换 ad : mamda
      第二次交换 md : madma
      第三次交换 ma : madam (回文!完美!)

    输入说明 :

      第一行是一个整数N,表示接下来的字符串的长度(N <= 8000)
      第二行是一个字符串,长度为N.只包含小写字母

    输出说明 :

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

    输入范例 :
    5
    mamad

    输出范例 :
    3

    #include <iostream>
    #include <string>
    #include <cmath>
    #include <algorithm>
    using namespace std;
    int main()
    {
    	int len;
    	cin >> len;
    	getchar();
    	string str;
    	cin >> str;
    	int l = len - 1;
    	int step = 0;
    	int flag = 0;
    	for (int i = 0; i < l; i++)
    	{
    		for (int j = l; j >= i; j--)
    		{
    			if (i == j)
    			{
    				if (len % 2 == 0 || flag == 1)
    				{
    					cout << "Impossible" << endl;
    					return 0;
    				}
    				flag = 1;
    				step += (len - 1) / 2 - i;
    			}
    			else
    			{
    				if (str[i] == str[j])
    				{
    					for (int k = j; k < l; k++)
    					{
    						swap(str[k], str[k + 1]);
    						step++;
    					}
    					l--;
    					break;
    				}
    			}
    		}
    	}
    	cout << step << endl;
    	return 0;
    }
    
    Yesterday is history,tomorrow ismystery,but today is a gift!That why it is called Present!
  • 相关阅读:
    设计模式之工厂模式大后期
    Net基础恶补
    TPL异步并行编程之回调
    Net线程安全集合
    【记录贴】树的深度最优路径分析 [ 未完全版 ] 【原】
    java生产环境增量发版陷阱【原】
    expdp和impdp导入导出用法【转】
    exp和imp导入导出时表空间问题【未完】
    linux xargs【转】
    windows cmd命令 批处理bat 导增量jar包【原】
  • 原文地址:https://www.cnblogs.com/VictorierJwr/p/12878310.html
Copyright © 2020-2023  润新知