Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 32 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
32
Dung lượng
861 KB
Nội dung
Để tính biểu thức s = ½ + 2/3 + ¾ + … + n/(n+1) ta chọn hàm float F(int n) { if (n==1) return 1.0/2; else return (float)n/(n+1) + F(n-1); } Thuật toán biểu diễn cách Tất cách liệt kê Cho biết kết đoạn chương trình sau: int F(int a[], int n) Tham khảo Tài liệu hướng dẫn học Bài – Đánh giá thuật toán, mục V, Text { if (n==1) return a[0]; F(a,5) = + F(a,4) = else F(a,4) = + F(a,3) = return + F(a,n-1); F(a,3) = + F(a,2) = } F(a,2) = + F(a,1) = int main() F(a,1) = a[0] = { int a[] = {2, 3, 4, 5, 6}; printf("%d",F(a,5)); getch(); } Cho mảng a có N (N>=2) phần từ, x biến, xét đoạn mã sau cho biết đoạn mã biểu diễn thuật tốn gì? Bước 1: Khởi gán i = 0, s = 0, qua bước 2; Bước 2: Nếu a[i] == x s++; qua bước Bước 3: i = i + 1; Nếu i == n: hết mảng Dừng, in s hình Đếm số phần tử có giá trị x mảng Ngược lại: Lặp lại bước Đây định nghĩa độ phức nào? “được tính tổng số chi phí mặt tổng thời gian cần thiết để hồn thành thuật tốn, đánh giá dựa vào số lượng thao tác sử dụng thuật toán dựa liệu đầu vào Thời gian Để xác định giảithuật đệ quy cần xác định gì? Cả hai lựa chọn Cho biết kết đoạn chương trình sau: 12 long f5(int n) Tham khảo: Tham khảo Tài liệu hướng dẫn học Bài – Đánh giá thuật toán, mục V, Text { if (2*n==2) return 2; else F5(3) = 2*3 + F5(2) = 12 F5(2) = 2*2 + F5(1) = F5(1) = return 2*n + f5(n-1); } int main() { long x = f5(3); printf("%ld", x); getch(); } Cho đoạn mã sau, cho biết đoạn mã biểu diễn thuật tốn gì? Tính (n-1)! Bước 1: S = 1, i = 1; Bước 2: Nếu i=1 ta chọn hàm float F( int n ) { if (n ==1 ) return 1.0/2; else return 1.0/(2*n) + F1(n-1); } Cho biết kết đoạn chương trình sau: 20 int F(int a[], int n) Tham khảo: Tham khảo Tài liệu hướng dẫn học Bài – Đánh giá thuật toán, mục V, Text { if (n==1) return a[0]; else return a[n-1] + F(a,n-1); } F(a,5) = a[4] + F(a,4) F(a,4) = a[3] + F(a,3) F(a,3) = a[2] + F(a,2) F(a,2) = a[1] + F(a,1) F(a,1) = a[0] int main() { int a[] = {2, 3, 4, 5, 6}; printf("%d",F(a,5)); getch(); } Một chương trình cài đặt máy tính xác Thuật toán định thành phần Cấutrúcliệu Cả hai thành phần Đây định nghĩa độ phức nào? “Được tính tổng số chi phí mặt khơng gian (bộ nhớ) cần thiết sử dụng cho thuật tốn” Khơng gian Cho mảng a có N (N>=2) phần từ, x biến, xét đoạn mã sau cho biết đoạn mã biểu diễn thuật tốn gì? Đếm số phần tử mảng mảng Bước 1: Khởi gán i = 0, s = 0, qua bước 2; Bước 2: Nếu a[i] == x Cả hai lựa chọn sai Thời gian Đếm số phần tử có giá trị x mảng Tìm kiếm tuyến tính phần tử mang giá trị x mảng s++; qua bước Bước 3: i = i + 1; Nếu i == n: hết mảng Dừng, in s hình Ngược lại: Lặp lại bước Để tính biểu thức s = xn với n>=0 ta chọn hàm long F(int x, int n) { if (n==1) return 1; else return x*F(x,n-1); } Cho thuật toán sau: Số phép gán: Gmax = Số phép so sánh: Smax = 2N + int LinenearSearch( int M[], int N, int X) { int k = 0; while (M[k] !=X && k x right = middle - a[middle] < x left = middle + Bước 3: Nếu left next = new_element; if (p != NULL) p -> pre = new_element; if (q == DQ.Tail) …[1]… } else AddFirst( DQ, new_element); } Đoạn lệnh điền vào [1] cho đúng? Lựa chọn câu danh sách liên kết đôi Định nghĩa với danh sách liên kết Để tiến hành tìm kiếm phần tử danh sách liên kết đơi sử dụng phương pháp tìm kiếm gì? - Vùng liên kết phần tử danh sách đơi có 02 mối liên kết với 01 phần tử danh sách - Vùng liên kết phần tử danh sách liên đơi có 02 mối liên kết với phần tử đầu cuối danh sách - Vùng liên kết phần tử danh sách liên đơi có 01 mối liên kết với 02 phần tử khác danh sách Danh sách liên kết tập hợp phần tử mà chúng có kết nối với dựa vào liên kết chúng Tìm kiếm tuyến tính Tổ chức danh sách liên kết kép gồm có thành phần: thành phần Để xếp phần tử danh sách liên kết có phương án sử dụng: 23 Lựa chọn phát biểu hàm đợi- Bổ sung phần tử cuối ds loại bỏ phần tử đầu Ds Bổ sung phần tử cuối ds loại bỏ phần tử cuối Ds Lựa chọn phát biểu ngăn sếp-stack Cho phần tử 5,103,42 đc bổ sung vào hàm đợi (Query) phần tử đc lất Cho phần tử 5,103,42 đc bổ sung vào ngăn sếp (stack) phần tử đc lất 42 Cho phần tử 5, 10, 3, 42 bổ sung vào ngăn xếp (Stack) Phần tử lấy 42 Chọn câu trả lời: Ứng dụng ngăn xếp gồm Tất phương án Cho phần tử 5, 10, 3, 42 bổ sung vào hàng đợi (Queue) Phần tử lấy cuối 10 42 Cho đoạn mã sau, cho biết kết x? Red, Yellow, Green Queue Q; InitQueue(Q); Put(Q, “Green”); Put(Q, “Red”); Put(Q, “Yellow”); Get(Q,x); Đâu định nghĩa Hàng đợi Các ứng dụng hàng đợi gồm kiểu danh sách trang bị hai phép toán bổ sung phần tử vào cuối danh sách loại bỏ phần tử đầu danh sách Tất phương án Tất phương án sai Ngăn xếp gọi danh sách LIFO Hàng đợi gọi danh sách FIFO Cho đoạn mã sau stack s; for (int i = 1; i Left ); NLR(Root->Left) ; [1] ……… } } Đoạn mã điền vào phần trống dòng số [1] Cho phần tử sau: 31, 19, 36, 20, 41, 17, 33, 32 Tạo NPTK từ phần tử Hãy cho biết sau xóa phần tử 33 sau áp dụng phương pháp duyệt RNL kết thu thứ tự phần tử nào? 41, 36, 32, 31, 20, 19, 17 Cho phần tử sau: 31, 19, 36, 20, 41, 17, 33, a 31, 19, 17, 20, 36, 32, 41 32 Tạo NPTK từ phần tử Hãy cho biết sau xóa phần tử 33 sau áp dụng phương pháp duyệt LNR kết thu thứ tự phần tử nào? c 17, 20, 19, 32, 41, 36, 31 d 17, 19, 20, 31, 32, 36, 41 Thao tác thêm phần tử vào so sánh giá trị phần tử cần thêm vào so với nút xét phần tử cần thêm vào lớn thêm vào vị trí nào? Phần tử bổ sung vào nhánh trái nút xét Định nghĩa cấutrúcliệu danh sách liên kết đôi mô tả sau: Vùng liên kết quản lý địa phần tử struct Node { int Key; struct Node *next; struct Node *pre; }; Trong đó, khai báo Node *next dùng để mô tả Các hàm để cấp phát nhớ là? malloc(), calloc(), new() Để xếp phần tử danh sách liên kết đôi sử dụng phương án nào? Hoán vị nội dung phần tử Cho đoạn chương trình sau: DQ.Head -> next = NULL; void RemoveHead( DLIST &DQ ) { DNode*p; if ( DQ.Head != NULL) { p = DQ.Head; DQ.Head = DQ.Head -> next; ( ) free(p); if ( DQ.Head == NULL)DQ.Tail = NULL; } DQ.Head -> pre = NULL; DQ.Head -> next= NULL; DQ.Head -> pre = NULL; } Đoạn lệnh đưa vào (1) là? Đoạn mã để tạo nút có thành phần x danh sách liên kết đôi với nút gồm thành phần (infor, next, pre) sau: next Node* get_node( Data x ){ Node *p; p = (Node*)malloc(sizeof(Node)); if ( p == NULL ) { printf(“Ko du bo nho”); exit(1); } p ->infor = x; p -> … = NULL; p -> pre = NULL; return p; } Điền phần thiếu vào chỗ ………… Chọn câu trả lời: Cho phần tử 5, 10, 3, 42 bổ sung vào hàng đợi (Queue) Phần tử lấy Chọn câu trả lời: Ma trận kề biểu diễn đồ thị số cho hình vẽ Đồ thị vô hướng G = gồm n đỉnh đỉnh có số bậc có cạnh Cho đồ thị G = dạng ma trận trọng số Hãy cho tập cạnh khung nhỏ xây dựng theo thuật tốn Kruskal 3n cạnh Cho đồ thị vơ hướng hình vẽ Đỉnh đỉnh cô lập đồ thị Đỉnh f Cho G = đồ thị vô hướng liên thông n đỉnh T = gọi khung đồ thị nếu: Tổng phần tử hàng cột ma trận kề đồ thị vô hướng G = Bậc có nghĩa gì? Tổng phần tử hàng i, cột j ma trận kề đồ thị vô hướng G = Cho đồ thị trọng số G = hình vẽ Hãy cho tập cạnh bao trùm ngắn xây dựng theo thuật toán Prim Giả sử đỉnh T liên thơng có n-1 cạnh T={ (2, 3), (1, 3), (4, 5), (4, 6), (3, 5) } Số cạnh liên thuộc với đỉnh cột hàng Là bậc lớn nút Bậc đỉnh i, đỉnh j T = { (1, 4), (4, 3), (1, 2), (4, 5), (2, 6), (6,7) } ... phương pháp duyệt NLR kết thu 31, 19, 17, 20, 36, 32, 41 thứ tự phần tử nào? Cho dãy số sau: 30, 18, 35, 17, 40, 16, 32, 31, 43, 19 Cho biết kết duyệt tạo từ phần tử phương pháp duyệt LRN (Left... nghĩa gì? Là số nhánh nút Cho NPTK, Cho biết kết duyệt theo thứ tự LRN là: 8, 6, 14, 16, 11, 33, 31, 46, 36, 30 Phương pháp duyệt NLR phương pháp duyệt gì? Node - Left - Right Cho dãy số sau: 30,... 40, 16, 32, 31, 43, 19 Cho biết kết duyệt tạo từ phần tử phương pháp duyệt NLR (Node Left Right): 30, 18, 17, 16, 19, 35, 32, 31, 40, 43 Cho NPTK, Cho biết kết duyệt theo thứ tự LRN là: 8, 6, 14,