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

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

字符串距离(opj )(动态规划)

發(fā)布時(shí)間:2023/12/3 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 字符串距离(opj )(动态规划) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目描述2988:計(jì)算字符串距離

對(duì)于兩個(gè)不同的字符串,我們有一套操作方法來(lái)把他們變得相同,具體方法為:

  • 修改一個(gè)字符(如把“a”替換為“b”)
  • 刪除一個(gè)字符(如把“traveling”變?yōu)椤皌ravelng”)
    比如對(duì)于“abcdefg”和“abcdef”兩個(gè)字符串來(lái)說(shuō),我們認(rèn)為可以通過(guò)增加/減少一個(gè)“g”的方式來(lái)達(dá)到目的。無(wú)論增加還是減少“g”,我們都僅僅需要一次操作。我們把這個(gè)操作所需要的次數(shù)定義為兩個(gè)字符串的距離。
    給定任意兩個(gè)字符串,寫(xiě)出一個(gè)算法來(lái)計(jì)算出他們的距離。
    輸入
    第一行有一個(gè)整數(shù)n。表示測(cè)試數(shù)據(jù)的組數(shù),
    接下來(lái)共n行,每行兩個(gè)字符串,用空格隔開(kāi)。表示要計(jì)算距離的兩個(gè)字符串
    字符串長(zhǎng)度不超過(guò)1000。
    輸出
    針對(duì)每一組測(cè)試數(shù)據(jù)輸出一個(gè)整數(shù),值為兩個(gè)字符串的距離。
  • 解析

    使用dp轉(zhuǎn)移:

    if(a[i]==b[j]) dp[i][j]=dp[i-1][j-1]; else{dp[i][j]=min(dp[i-1][j-1](修改),min(dp[i-1][j](刪前),dp[i][j-1](刪后)))+1; }

    就完事啦

    問(wèn)題

    然而…
    又出了一堆bug
    勿忘國(guó)恥

    1.定義

    一開(kāi)始又草率了qwq
    這題不能用最長(zhǎng)公共子序列!
    其實(shí)很顯然
    但想dp的時(shí)候就是看不到
    第n次了
    dp一定要謹(jǐn)慎!!

    2.初始化

    少了一行很關(guān)鍵的東西

    for(int i=1;i<=max(l1,l2);i++) dp[i][0]=dp[0][i]=i;

    實(shí)際意義也很顯然
    所以dp的初始化也是要重視的
    很多時(shí)候不止是賦個(gè)dp[0][0]=0這么簡(jiǎn)單

    代碼

    #include<bits/stdc++.h> using namespace std; #define ll long long const int N=2e3+100; int n,m; char a[N],b[N]; int dp[N][N],l1,l2; int main(){scanf("%d",&n);for(int k=1;k<=n;k++){scanf(" %s",a+1);scanf(" %s",b+1);l1=strlen(a+1);l2=strlen(b+1);//cout<<a+1;dp[0][0]=0;for(int i=1;i<=max(l1,l2);i++) dp[i][0]=dp[0][i]=i; // int m=max(l1,l2);for(int i=1;i<=l1;i++){for(int j=1;j<=l2;j++){if(a[i]==b[j]) dp[i][j]=dp[i-1][j-1];else{dp[i][j]=min(dp[i-1][j-1],min(dp[i-1][j],dp[i][j-1]))+1;} // printf("i=%d j=%d dp=%d\n",i,j,dp[i][j]);}}printf("%d\n",dp[l1][l2]);}return 0; } /* 3 abcdefg abcdef ab ab mnklj jlknm */

    總結(jié)

    以上是生活随笔為你收集整理的字符串距离(opj )(动态规划)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。