序列匹配加回溯

2021-09-29 01:10:38 字數 1223 閱讀 2024

題目:

lect6  序列匹配

**:方法一——普通二維陣列序列匹配+開陣列回溯:

int maxscore(string word1,string word2,int*& r) 

for (int j = 0; j <= len2; j++)

for (int i = 1; i <= len1; i++)

else tl = temp[i - 1][j - 1] - 1;

l = temp[i][j - 1] -3;

t = temp[i - 1][j] -3;

res = tl > l ? tl : l;

res = res > t ? res : t;

temp[i][j] = res;

} }int m = len1, n = len2,tpt=temp[len1][len2];

for (int i = len2-1; i >= 0; i--)

if (n1 > n2&&n1 > n3)

else if (n2 > n3)

else

} return temp[len1][len2];

}int main() ;

string s1 = "ocurrance",s2="occurrence";

int* r = null;

int res = maxscore(s1, s2,r);

return 0;

}

方法二——開兩個陣列線性空間找,加遞迴回溯找對齊分割點:

int prefix_alignment(string word1,string word2,int* score) 

for (int m = 0; m <= len1; m++)

} return score[len1];

}int suffix_alignment(string word1, string word2, int* score)

for (int i = len2-1; i >= 0; i--)

for (int j = len1; j >= 0; j--)

} return score[0];

}int backtrack(string word1,string word2,int& index)

} return res;

}

方格迷宮(矩陣加回溯)

問題 j 方格迷宮 題目描述 設有乙個 n n 2 n 10 方格的迷宮,入口和出口分別在左上角和右上角。迷宮格仔中分別放0和 1,0表示可通,1表示不能,入口和出口處肯定是 0。迷宮走的規則如下所示 即從某點開始,有八個方向可走,前進方格中數字為 0時表示可通過,為 1時表示不可通過,要另找路徑。...

用深搜加回溯來實現求解數獨的所有解

1.對於當前的數獨狀態,我們可以把每個未填的位置的候選數字全部找出來,可以將候選數字放到乙個陣列或在vector中 vector find int x,int y 找出soudu x y 的候選數字2.如果有一些未填位置的候選數字為乙個,那麼這個就是確定項,我們可以先確定填補這個位置,如果所有的未填...

正則例項 回溯匹配html標籤

首先構造乙個html文字 let str 然後去除首位的 let str let pat let res str.match pat 1 console.log res 眾所周知,匹配,不能 let pat let res str.match pat 1 let pat1 hh 1 6 hh 1 c...