zoukankan      html  css  js  c++  java
  • 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!
  • 相关阅读:
    福大软工 · 第七次作业
    福大软工 · 第八次作业(课堂实战)- 项目UML设计(团队)
    福大软工1816 · 第六次作业
    福大软工1816 · 第四次作业
    福大软工1816 · 第三次作业
    测试用例设计--黑盒测试、白盒测试
    数据库测试概述
    层次数据库与网状数据库
    ER图转换关系模型
    事务、锁
  • 原文地址:https://www.cnblogs.com/VictorierJwr/p/12878310.html
Copyright © 2011-2022 走看看