zoukankan      html  css  js  c++  java
  • 基础练习 完美的代价

      基础练习 完美的代价  
    时间限制:1.0s   内存限制:512.0MB
          
    问题描述
      回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的。小龙龙认为回文串才是完美的。现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串。
      交换的定义是:交换两个相邻的字符
      例如mamad
      第一次交换 ad : mamda
      第二次交换 md : madma
      第三次交换 ma : madam (回文!完美!)
    输入格式
      第一行是一个整数N,表示接下来的字符串的长度(N <= 8000)
      第二行是一个字符串,长度为N.只包含小写字母
    输出格式
      如果可能,输出最少的交换次数。
      否则输出Impossible
    样例输入
    5
    mamad
    样例输出
    3
    import java.util.Scanner;
    public class Main {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            
            int i,j,l,n,k,sum=0,flat=1,c=-1;
            Scanner sc=new Scanner(System.in);
            n=sc.nextInt();
            char a[]=new char[n];
            String s=sc.next();
            a=s.toCharArray();
            j=n-1;
            
            for(i=0;i<j;i++)
            {
                for(k=j;k>=i;k--)
                {
                    if(k==i)
                    {
                        if(n%2==0||c!=-1)
                        {
                            flat=0;
                            break;
                        }
                        c=1;
                        sum=sum+n/2-i;
                        break;
                    }
                    if(a[k]==a[i])
                    {
                        for(l=k;l<j;l++)
                        {
                            a[l]=a[l+1];
                        }
                        a[j]=a[i];
                        sum=sum+j-k;
                        j--;
                        break;
                    }
                }
                if(flat==0)
                    break;
            }
            if(flat==0)
                System.out.println("Impossible");
            else
                System.out.println(sum);
    
        }
    
    }
  • 相关阅读:
    redhat Nginx 安装
    黑客经验谈:跳板攻击入侵技术实例解析
    Linux各版本的本地root密码破解方法
    python学习笔记
    Git 提交的正确姿势:Commit message 编写指南
    数论 + 扩展欧几里得
    数论
    flutter 延时函数delay Loading页面
    flutter 切换tab后保留tab状态
    iOS 应用"无法安装应用程序 因为证书无效"的解决方案
  • 原文地址:https://www.cnblogs.com/watchfree/p/5316579.html
Copyright © 2011-2022 走看看