將乙個序列變成另乙個序列的最少修改步數。
例如下圖,將字串a變成字串b,所需要的步驟為6個步驟,match表示0步,其他操作表示1步:
設計演算法如下:
public呼叫方法如下:sealed
class
minimumeditdistance
else
//三者取最小代價
c[i, j] =math.min(math.min(candidatedel, candidateins), candidatematrep);}}
return
c; }
public listgetpossibledesicion(int[,] c, int row, int
col)
else
if (c[i, j] == c[i, j - 1] + 1) //
插入
else
if (c[i, j] == c[i - 1, j - 1])//
匹配
else
//替換
}return lo.reverse().tolist();}}
public
enum
operation
public
class
operationonoriginalstr
public operation operation
public
int aindex
public
int? bindex
}
minimumeditdistance med = newminimumeditdistance();
var c =med.calculatedistance(a, b);
var steps =med.getpossibledesicion(c, a.length, b.length);
steps.foreach(s => console.writeline("
operation:,a,b
", s.operation, s.aindex, s.bindex));
c STL之常用集合演算法
set intersection 求兩個容器的交集 set union 求兩個集合的並集 set difference 求兩個集合的差集 1.set intersection includeusing namespace std include include 常用集合演算法 set interse...
kotlin 特殊集合之序列
1.先看段 直觀感受序列的優點,速度快 1 序列操作又稱惰性集合操作,在對集合進行鏈式操作 對映 過濾 變換 不需要像普通集合那樣,每進行一次資料操作都需要開闢新的記憶體儲存中間結果 author hc date 2019 09 25 12 05 fun main args array map su...
一些常用集合演算法 之組合生成
一些常用集合演算法 之組合生成 在開發過程中常常需要處理集合,因此我寫了一些常用演算法,貼出大家提提意見。本帖介紹組合生成演算法。開乙個陣列,陣列元素的值為1表示其下標代表的數被選中,為0則沒選中。首先初始化,將陣列前m個元素置1,表示第乙個組合選中前m個元素。然後找到從左到右的第乙個 10 組合,...