題目:
對於兩個字串a和b,我們需要進行插入、刪除和修改操作將a串變為b串,定義c0,c1,c2分別為三種操作的代價,請設計乙個高效演算法,求出將a串變為b串所需要的最少代價。
給定兩個字串a和b,及它們的長度和三種操作代價,請返回將a串變為b串所需要的最小代價。保證兩串長度均小於等於300,且三種代價值均小於等於100。
根據動態規劃特點,定義二維陣列來實現轉化代價的求值,最右下方所求即為所求。
難點在於,當兩個字串最後乙個字元不相同的情況,可以分為以下三種情況。
當字串a和字串b最後一位不相同時,可以通過三種變化方式來實現。
class mincost {
public:
int findmincost(string a, int n, string b, int m, int c0, int c1, int c2) {
// write code here
vector>dp(n+1);
for(int i=0;i<=n;i++)
dp[i].resize(m+1);
for(int i=0;i<=n;i++)
dp[i][0]=i*c1;
for(int i=0;i<=m;i++)
dp[0][i]=i*c0;
if(c0+c1
動態規劃 最優編輯
int findmincost string a,int n,string b,int m,int c0,int c1,int c2 初始化矩陣 dp 0 0 0 for int i 1 i m 1 i for int j 1 j n 1 j for int i 1 i n 1 i return d...
動態規劃求最優路徑
dynamic.py,基於動態規劃求最優路徑 import matplotlib.pyplot as plt import pylab as pl import connmysql import pandas as pd sql2 select id,distance,duration from t...
最優配對問題(動態規劃)
空間裡有n個點p0,p1,p2.pn 1,你的任務是把他們配成n 2對 n是偶數 使得每個點恰好在乙個點對中。所有點的距離之和應該盡量小。n 20.定義狀態d i s 為前i個點中,位於集合s的元素兩兩配對的最小距離,則狀態轉移方程就是 d i,s min 其中 pipj 表示兩點之間的距離。邊界是...