zoukankan      html  css  js  c++  java
  • NYOJ 37 回文字符串

    感觉非常坑的一道题!!!想了非常多解法都是错的,百度了一下解法,真是醉了。

    。。

    解法:把字符串反过来。求最长公共子序列


    时间限制:3000 ms  |  内存限制:65535 KB

    难度:4

    • 描写叙述

    • 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是全然一样的,比方"aba"。当然。我们给你的问题不会再简单到推断一个字符串是不是回文字符串。

      如今要求你,给你一个字符串。可在任何位置加入字符,最少再加入几个字符,能够使这个字符串成为回文字符串。

      • 输入

      • 第一行给出整数N(0<N<100)
        接下来的N行,每行一个字符串,每一个字符串长度不超过1000.

      • 输出

      • 每行输出所需加入的最少字符数

      • 例子输入

      • 1
        Ab3bd
      • 例子输出

      • 2


    #include<iostream>
    #include<cstring>
    #include<string>
    
    using namespace std;
    
    int a[1010][1010];
    
    int max(int x, int y)
    {
    	return x>y ? x : y;
    }
    
    int main()
    {
    	int test,i,j,k,len1,lcs;
    	string s1,s2;
    	cin>>test;
    	while(test--)
    	{
    		cin>>s1;
    		s2=s1;		//刚開始这一步忽略了。想到了STL中讲的,恍然大悟
    		len1=s1.length();
    		for(i=0;i<len1;i++)
    			s2[i]=s1[len1-1-i];
    		memset(a,0,sizeof(a));
    		lcs=0;
    		for(i=1;i<len1+1;i++)
    			for(j=1;j<len1+1;j++)
    			{
    				if(s1[i-1]==s2[j-1])
    					a[i][j]=a[i-1][j-1]+1;
    				else
    					a[i][j]=max(a[i-1][j],a[i][j-1]);
    
    				if(a[i][j]>lcs)
    					lcs=a[i][j];
    			}
    			cout<<len1-lcs<<endl;
    	}
    	return 0;
    }


  • 相关阅读:
    Numpy 里线性代数函数
    lateral view 使用方法
    Numpy 基础函数
    Numpy 基础操作
    pandas 基础操作记录学习
    pandas向左移动非空单元格
    供应商自动记账
    SAP Smartforms 参数配置
    SAP FPM 相关包 APB_FPM_CORE
    SAP BPC 清除CUBE 中的数据
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/7101266.html
Copyright © 2011-2022 走看看