NC15317. psd面试
描述
输入描述
多组输入,每组输入一个长度不超过 1234 的没空格的字符串,是 psd 的简历。
输出描述
每组输出一个整数,如题。
示例1
输入:
输出:
2
示例2
输入:
aBc,bAd
输出:
2
Java(javac 1.8) 解法, 执行用时: 222ms, 内存消耗: 24268K, 提交时间: 2018-03-26 15:27:13
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); String s; while(sc.hasNext()){ s=sc.next(); int l=s.length(); int dp[][]=new int [l+1][l+1]; s=s.toLowerCase(); for(int i=1;i<=l;i++){ for(int j=1;j<=l;j++){ if(s.charAt(i-1)==s.charAt(l-j)) dp[i][j]=dp[i-1][j-1]+1; else dp[i][j]=Math.max(dp[i-1][j], dp[i][j-1]); } } System.out.println(l-dp[l][l]); } } }
C++11(clang++ 3.9) 解法, 执行用时: 19ms, 内存消耗: 6376K, 提交时间: 2018-03-28 19:39:54
#include<bits/stdc++.h> using namespace std; int main() {int n,m,j,k,l,i,o,a,b,d[550][550]; string s; while(cin>>s) {s='0'+s; n=s.size()-1; for(i=1;i<=n;i++) {if(isupper(s[i])) {s[i]+=32; } } int d[n+1][n+1]; memset(d,0,sizeof(d)); string t=s; for(i=1;i<=n;i++) {for(j=n;j>=1;j--) {if(s[i]==t[j]) {d[i][j]=d[i-1][j+1]+1; } if(s[i]!=t[j]) {d[i][j]=max(d[i-1][j],d[i][j+1]); } } } cout<<n-d[n][1]<<"\n"; } }