精華區beta ACMCLUB 關於我們 聯絡資訊
題目說明: 在某次歷史考試中,老師會給學生一堆事件, 假設有10個事件,將其由1~10分別編號, 要求學生將其依事件發生的先後順序來排列, 假設正確答案為3 1 2 4 9 5 10 6 8 7 而學生的回答為4 7 2 3 10 6 9 1 5 8 比較這兩個字串, 求出兩字串Longest common subsequence的長度, 則該長度即為學生的分數 解法: input是該事件的rank, 即代表該事件是第幾個發生的, 例如:3 1 2 4 9 5 10 6 8 7 (數字代表rank) 代表編號1的事件是第三個發生 2 一 3 二 4 四 ....... 那麼將其轉為按順序來排列 => 2 3 1 4 6 8 10 9 5 7 (數字代表事件編號) 將下來只要求字串的LCS長度 X_1 X_2 X_3......X_i Y_1 Y_2 .........Y_j 假設兩字串分別為 X_1~X_i Y_1~Y_j C[i,j]代表其LCS的長度, C[i,j]的式子如下 C[i,j] = (1) 0 if i=0 or j =0 (2) C[i-1,j-1]+1 if X_i = Y_j (3) MAX{ C[i-1,j] , C[i,j-1] } if X_i != Y_j -- ※ 發信站: 批踢踢實業坊(ptt.csie.ntu.edu.tw) ◆ From: 140.112.244.71