日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NYOJ_37_回文字符串

發布時間:2023/11/29 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NYOJ_37_回文字符串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先,我們把字符串反轉,然后用反串和原串求最大公共子序列,再用字符串長度減去最大公共子序列的長度就是答案,我們還可以用滾動數組優化內存

狀態轉移方程:

(i長度的a串和j長度的b串的最長公共子序列長度)

? ? ? ? ? ? ?1.dp[i-1][j-1]+1 ? ? a[i]=b[j]

dp[i][j]=

? ? ? ? ? ? ?2.max(dp[i][j-1],dp[i-1][j]) ? ? a[i]!=b[j]

#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<string> using namespace std; int re[2][1005];//使用滾動數組優化了空間 int main() {int t,i,j;string a,b;scanf("%d",&t);while(t--){cin>>a;b=a;reverse(a.begin(),a.end());memset(re,0,sizeof(re));for(i=0;i<a.length();++i)for(j=0;j<b.length();++j){if(a[i]==b[j]){re[(i+1)&1][j+1]=re[i&1][j]+1;}else re[(i+1)&1][j+1]=re[i&1][j+1]>re[(i+1)&1][j]?re[i&1][j+1]:re[(i+1)&1][j];//條件表達式是最省時間的 }printf("%d\n",a.length()-re[(a.length())&1][b.length()]);}return 0; }

?

轉載于:https://www.cnblogs.com/A-way/archive/2013/05/02/3054423.html

總結

以上是生活随笔為你收集整理的NYOJ_37_回文字符串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。