51nod 1183 編輯距離
根據lcs的思路,做兩字串的比較。
f(i,j)表示a字串在1–i,於b字串在1–j時的最小改變量。
遞推式:
f(i,j) = min(f(i – 1, j – 1) + same(i,j), f(i – 1,j ) + 1, f(i, j – 1) + 1)
初始值:
f(0, j) = j
f(i, 0) = i
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define ll long long
#define inf 0x3f3f3f3f
#define pi acos(-1.0)
#define e 2.71828
#define mod 1000000007
#define n 1010
char a[n],b[n];
int dp[n][n];
int main()}}
printf("%d\n",dp[lena-1][lenb-1]);
return
0;}
輸出dp圖:
由於只需要最後一行的值,那麼就像01揹包一樣可以優化空間。
char a[n],b[n];
int dp[n];
int main()
//puts("");
intnext;
for(int i = 1; i < lena; i++)
else
//printf("%3d",dp[j]);
}//puts("");
}printf("%d\n",dp[lenb-1]);
return
0;}
51nod 1183 編輯距離
基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 編輯距離,又稱levenshtein距離 也叫做edit distance 是指兩個字串之間,由乙個轉成另乙個所需的最少編輯操作次數。許可的編輯操作包括將乙個字元替換成另乙個字元,插入乙個字元,刪除乙個字元。例如將kitte...
51 nod 1183 編輯距離
1183 編輯距離 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 編輯距離,又稱levenshtein距離 也叫做edit distance 是指兩個字串之間,由乙個轉成另乙個所需的最少編輯操作次數。許可的編輯操作包括將乙個字元替換成另乙個字元,插入乙個字元,刪除乙個字...
51nod 1183 編輯距離
思路 之前做個這道題,當時就感覺此題很像最長公共子串行,今天重新做51nod裡想了一次,思路是相同的,一開始初始陣列,最長公共子串行是0到n有多少個相同 這個是0到n需要轉化多少步 那自然也就是n步了 按著這個思路 a b 的a陣列前i個與b陣列前j個需要幾步轉化,相同思路,模擬 include i...