遞迴與分治策略

2021-09-01 13:03:42 字數 1424 閱讀 2596

//輸出最長公共子串(lcs)

//二維陣列veca記錄的是兩個字串xi和yj的lcs長度

int lcs_length(const string &str1, const string &str2,

vector> &veca, vector> &vecb)

for (j = 0; j <= str2.length(); j++)

for (i = 1; i <= str1.length(); i++)

else

else

}} }

return veca[str1.length()][str2.length()];}

//該函式用於輸出乙個lcs的序列

//這裡輸出的順序是先向上尋找,再向左尋找

void merge(int *array, int low, int middle, int high) //合併

while(i <= middle) //保證前半部資料錄入暫存

a[k++] = array[i++];

while(j <= high) //保證後半部資料錄入暫存

a[k++] = array[j++];

for(i = low; i <= high; i++) //將暫存的資料重新填充至array[low]--array[high]中

array[i] = a[i - low];

}void mergesort(int *array, int low, int high)

}int main()

mergesort(array, 0, n - 1); //進行排序

for(int j = 0; j < n; j++) //輸出排列結果

} int main()

cout<

}

遞迴與分治策略

1 全排列問題 設r n 是要進行排列的n個元素。集合x中元素的全排列記為perm x 求r n 的全排列perm r n 用遞迴演算法求解 1 找出遞迴子結構性質 即原問題的解包含了子問題的解,且子問題的描述與原問題相同。這就可以用子問題的解來構造原問題的解。設r i r n 這是乙個子問題。設 ...

遞迴與分治策略

1.遞迴 直接或間接地呼叫自身的演算法稱為遞迴演算法。用函式自身給出定義的函式稱為遞迴函式。1 階乘函式 include using namespace std int main int factorial int n 2 fibonacci數列 include using namespace st...

分治策略與遞迴

先看 資料結構與演算法分析 中對分治策略的解釋 把問題分成兩個大致相等的子問題,然後再遞迴地對他們進行求解,這是 分 治 階段將兩個子問題的解合併到一起並可能再做些少量的附加工作,最後得到整個問題的解。由定義可以看出,分治需要進行兩步操作 分 將問題恰當的劃分為需要迭代處理的兩個子問題,治 將兩個子...