《資料結構 演算法與應用》7 動態調整陣列大小

2021-06-21 12:33:32 字數 1234 閱讀 4759

7. 假定用一維陣列a[0 : size-1]來儲存一組元素。如果有n個元素,可以把它們儲存在a[0],..., a[n-1]中。當n超過si ze時, 陣列將不足以儲存所有元素 , 必須分配乙個更大的陣列。類似地,如果元素的數目比size小很多,我們又可能希望 減少陣列的大小, 以便釋放出多餘的空間為其他地方所用。試編寫乙個模板函式changesize1d把陣列a的大小從size變成 tosize。函式首先應該分配乙個新的、大小為tosize的陣列,然後把原陣列a中的n個元素複製到新陣列a中,最後釋放原陣列 a所占用的空間。上機測試該函式。

//

// main.cpp

// test_07

//// created by cc on 14-4-13.

///*

7. 假定用一維陣列a[0 : size-1]來儲存一組元素。如果有n個元素,可以把它們儲存在a[0],..., a[n-1]中。當n超過si ze時, 陣列將不足以儲存所有元素 , 必須分配乙個更大的陣列。類似地,如果元素的數目比size小很多,我們又可能希望 減少陣列的大小, 以便釋放出多餘的空間為其他地方所用。試編寫乙個模板函式changesize1d把陣列a的大小從size變成 tosize。函式首先應該分配乙個新的、大小為tosize的陣列,然後把原陣列a中的n個元素複製到新陣列a中,最後釋放原陣列 a所占用的空間。上機測試該函式。

*/#include using namespace std;

template void changearraysize(t* &array, int size, int tosize);

int main(int argc, const char * argv)

//改變陣列大小

changearraysize(array, 10, 20);

//修改資料

for (int i = 0 ; i < 20 ; i++)

//列印觀察是否改變成功

for (int i = 0; i < 20; i++)

return 0;

}template void changearraysize(t* &array, int size, int tosize)

delete array;

array = temparray;

}

輸出結果如下圖:

資料結構與演算法 動態匹配演算法

如下 示例 package algorithm 動態匹配演算法解決揹包問題 public class packed int weight 表示揹包中的最大容量 int m 4 定義乙個二維陣列表示存放的最大 int v new int weight.length 1 m 1 定義乙個二維陣列來表示將...

演算法與資料結構 動態規劃

動態規劃 dp 的基本思想是 當前子問題的解可由上一子問題的解得出。動態規劃演算法通常基於由乙個遞推公式 狀態轉移方程 和若干個初始狀態 狀態 應用 1 lis longest increasing subsequence 求乙個陣列中的最長非降子串行的長度。子問題 我們可以考慮先求a 0 a 1 ...

演算法與資料結構 動態規劃

用遞迴求解問題時,反覆的巢狀會浪費記憶體。而且更重要的一點是,之前計算的結果無法有效儲存,下一次碰到同乙個問題時還需要再計算一次。例如遞迴求解 fibonacci 數列,假設求第 n 位 從 1 開始 的值,c 如下 include intfib int n return fib n 1 fib n...