Tải bản đầy đủ (.pdf) (50 trang)

ĐỀ THI MÔN Cấu Trúc Dữ Liệu và Giải Thuật năm 2012 học viện công nghệ bưu chính viễn thông

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (583.44 KB, 50 trang )



ĐỀ THI HẾT HỌC PHẦN - MÔN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
ĐỀ SỐ 01
Đề thi gồm 02 trang - Sinh viên làm bài trong 60 phút

Họ và tên sinh viên: Lớp:
Mã sinh viên:


Phần 1. (Sinh viên trả lời bằng cách ghi ra kết quả mà không cần giải thích gì thêm)

1. Viết các phần tử của mảng a[] = {-1, 10, -7, 5, 1} tại mỗi giai đoạn i khi áp dụng thuật toán
sắp xếp lựa chọn để sắp xếp a theo thứ tự tăng:
(i= 1) (i= 2)
(i= 3) (i= 4)

2. Viết các phần tử của mảng a[] = {-11, 10, -7, 5, 15} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp nổi bọt để sắp xếp a theo thứ tự giảm:
(i= 5) (i= 4)
(i= 3) (i= 2)

3. Viết các phần tử của mảng a[] = {11, 10, -7, 5, -1} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp xen vào để sắp xếp a theo thứ tự giảm:
(i= 1) (i= 2)
(i= 3) (i= 4)

4. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 21,
10, 15, -5, -2, 25, 8, 1, -10, 30 khi thực hiện phép duyệt cây theo thứ tự giữa:



5. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 21,
10, 15, -5, -2, 25, 8, 1, -10, 30 khi thực hiện phép duyệt cây theo thứ tự trước:


6. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 21,
10, 15, -5, -2, 25, 8, 1, -10, 30 khi thực hiện phép duyệt cây theo thứ tự sau:





Phần 2. (Lập trình)
Viết chương trình tìm X = (x
1
, x
2
, ,x
n
) và giá trị f(X) của hàm



n
i
iin
xcxxxf
1
21
), ,,(
đạt giá trị

lớn nhất. Trong đó,
   









n
i
iiin
xbxaDxxxX
1
21
1,0;, ,,
, c
i
, a
i
, b là các số nguyên dương,
n

100.

Dữ liệu vào n, c
j
, a

j
, b được cho trong file data.in theo khuôn dạng sau:
 Dòng đầu tiên ghi lại số tự nhiên n và b. Hai số được ghi cách nhau bởi một vài ký tự
trống;
 Dòng kế tiếp ghi lại n số c
i
(i=1, 2, , n). Hai số được ghi cách nhau bởi một vài ký tự
trống;
 Dòng cuối cùng ghi lại n số a
i
(i = 1, 2, ,n). Hai số được ghi cách nhau bởi một vài ký
tự trống.
Giá trị tối ưu f(x
1
,x
2
, ,x
n
) và phương án tối ưu X = (x
1
, x
2
, ,x
n
) tìm được ghi ra màn hình theo
khuôn dạng sau:
 Dòng đầu tiên in ra giá trị tối ưu f(x
1
,x
2

, ,x
n
);
 Dòng kế tiếp in ra phương án tối ưu X = (x
1
, x
2
, ,x
n
). Hai phần tử khác nhau của X được
ghi cách nhau bởi một vài khoảng trống.
Ví dụ:

Data.in
Màn hình
4 10
5 1 9 3
5 3 6 4
12
0 0 1 1




Thang điểm:
Phần 1: 3 điểm
Phần 2: 5 điểm
Trả lời các câu hỏi của giám khảo: 2 điểm



ĐỀ THI HẾT HỌC PHẦN - MÔN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
ĐỀ SỐ 02
Đề thi gồm 02 trang - Sinh viên làm bài trong 60 phút

Họ và tên sinh viên: Lớp:
Mã sinh viên:


Phần 1. (Sinh viên trả lời bằng cách ghi ra kết quả mà không cần giải thích gì thêm)

1. Viết các phần tử của mảng a[] = {15, -10, -7, -5, 21} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp lựa chọn để sắp xếp a theo thứ tự giảm:
(i= 1) (i= 2)
(i= 3) (i= 4)

2. Viết các phần tử của mảng a[] = {11, 10, -7, 35, -1} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp xen vào để sắp xếp a theo thứ tự tăng:
(i= 1) (i= 2)
(i= 3) (i= 4)

3. Viết các phần tử của mảng a[] = {-21, 17, -7, 5, -75} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp nổi bọt để sắp xếp a theo thứ tự tăng:
(i= 5) (i= 4)
(i= 3) (i= 2)


4. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 1, 51,
15, -5, -2, 2, 8, 11, 10, 30 khi thực hiện phép duyệt cây theo thứ tự sau:



5. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 1, 51,
15, -5, -2, 2, 8, 11, 10, 30 khi thực hiện phép duyệt cây theo thứ tự giữa:


6. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 1, 51,
15, -5, -2, 2, 8, 11, 10, 30 khi thực hiện phép duyệt cây theo thứ tự trước:




Phần 2. (Lập trình)
Cho dãy A[] gồm N số tự nhiên khác nhau và số tự nhiên K. Hãy viết chương trình liệt kê tất
cả các dãy con của dãy số A[] sao cho tổng các phần tử trong dãy con đó đúng bằng K. Dữ
liệu vào cho bởi file dayso.in theo khuôn dạng sau:
 Dòng đầu tiên ghi lại số tự nhiên N là số các số của dãy số A[] và số tự nhiên K, hai số
được viết cách nhau bởi một vài khoảng trống;
 Dòng kế tiếp ghi lại N số của dãy số A[], hai số được viết cách nhau một vài khoảng
trống.
Các dãy con thoả mãn điều kiện tìm được ghi ra màn hình theo khuôn dạng sau:
 Mỗi dòng in ra một dãy con. Hai phần tử khác nhau của dãy con được viết cách nhau
bởi một vài khoảng trống.
 Dòng cuối cùng in ra số các dãy con có tổng các phần tử đúng bằng K tìm được;

Ví dụ:

Dayso.in
Màn hình
7 50
5 10 15 20 25 30 35
20 30

15 35
5 20 25
5 15 30
5 10 35
5 10 15 20
5 10 15 20
7



Thang điểm:
Phần 1: 3 điểm
Phần 2: 5 điểm
Trả lời các câu hỏi của giám khảo: 2 điểm


ĐỀ THI HẾT HỌC PHẦN - MÔN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
ĐỀ SỐ 03
Đề thi gồm 02 trang - Sinh viên làm bài trong 60 phút

Họ và tên sinh viên: Lớp:
Mã sinh viên:


Phần 1. (Sinh viên trả lời bằng cách ghi ra kết quả mà không cần giải thích gì thêm)

1. Viết các phần tử của mảng a[] = {1, -10, -7, 5, -15} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp nổi bọt để sắp xếp a theo thứ tự tăng:
(i= 5) (i= 4)
(i= 3) (i= 2)


2. Viết các phần tử của mảng a[] = {17, -10, -7, 5, 31} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp lựa chọn để sắp xếp a theo thứ tự tăng:
(i= 1) (i= 2)
(i= 3) (i= 4)

3. Viết các phần tử của mảng a[] = {-11, 10, -7, 25, -21} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp xen vào để sắp xếp a theo thứ tự giảm:
(i= 1) (i= 2)
(i= 3) (i= 4)


4. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 2, -10,
15, 5, -2, 25, 8, 18, 10, 3 khi thực hiện phép duyệt cây theo thứ tự giữa:


5. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 2, -10,
15, 5, -2, 25, 8, 18, 10, 3 khi thực hiện phép duyệt cây theo thứ tự sau:


6. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 2, -10,
15, 5, -2, 25, 8, 18, 10, 3 khi thực hiện phép duyệt cây theo thứ tự trước:




Phần 2. (Lập trình)

Cho dãy gồm n số tự nhiên phân biệt a
1

, a
2
, , a
n
và số tự nhiên B. Hãy liệt kê tất cả các phần
tử của tập
   









n
i
iiin
nixBxaxxxD
1
21
, ,2,1,1,0,:,,, 
;
Dữ liệu vào cho bởi file data.in theo khuôn dạng như sau:
 Dòng đầu tiên ghi lại hai số tự nhiên n và B. Hai số được viết cách nhau bởi một vài
khoảng trống.
 Dòng kế tiếp ghi lại n số nguyên dương a
1
, a

2
, ,a
n
. Hai số khác nhau được viết cách
nhau bởi một vài kí tự trống.
Kết quả ghi ra màn hình theo khuôn dạng sau:
 Mỗi dòng in ra một vector nhị phân x = (x
1
, x
2
, , x
n
) là phần tử của D. Hai thành phần
khác nhau của vector x được viết cách nhau bởi một vài khoảng trống.
 Dòng cuối cùng in ra số tự nhiên k là số phần tử của tập D.

Ví dụ:

Data.in
Màn hình
7 25
5 10 15 20 25 30 70
0 0 0 0 1 0 0
1 0 0 1 0 0 0
0 1 1 0 0 0 0
3


Thang điểm:
Phần 1: 3 điểm

Phần 2: 5 điểm
Trả lời các câu hỏi của giám khảo: 2 điểm


ĐỀ THI HẾT HỌC PHẦN - MÔN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
ĐỀ SỐ 04
Đề thi gồm 02 trang - Sinh viên làm bài trong 60 phút

Họ và tên sinh viên: Lớp:
Mã sinh viên:


Phần 1. (Sinh viên trả lời bằng cách ghi ra kết quả mà không cần giải thích gì thêm)

1. Viết các phần tử của mảng a[] = {-1, 10, -7, -5, -15} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp nổi bọt để sắp xếp a theo thứ tự giảm:
(i= 5) (i= 4)
(i= 3) (i= 2)

2. Viết các phần tử của mảng a[] = {11, 1, -7, 5, -11} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp xen vào để sắp xếp a theo thứ tự tăng:
(i= 1) (i= 2)
(i= 3) (i= 4)

3. Viết các phần tử của mảng a[] = {-1, 10, -7, 15, 21} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp lựa chọn để sắp xếp a theo thứ tự giảm:
(i= 1) (i= 2)
(i= 3) (i= 4)



4. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 2, 17,
15, -5, -2, 25, 8, 1, 10, -30 khi thực hiện phép duyệt cây theo thứ tự giữa:


5. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 2, 17,
15, -5, -2, 25, 8, 1, 10, -30 khi thực hiện phép duyệt cây theo thứ tự trước:


6. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 2, 17,
15, -5, -2, 25, 8, 1, 10, -30 khi thực hiện phép duyệt cây theo thứ tự sau:




Phần 2. (Lập trình)
Cho file dữ liệu trungto.in gồm một dòng ghi lại một biểu thức trung tố gồm các toán
hạng là các chữ cái thường và toán tử là các phép toán +, -, *, / và ^.
Hãy sử dụng cấu trúc dữ liệu kiểu ngăn xếp viết chương trình chuyển biểu thức trung tố
trong file trungto.in thành biểu thức hậu tố.
Biểu thức hậu tố tìm được được ghi ra màn hình sao cho các toán tử và toán hạng cách
nhau một vài kí tự trống.
Ví dụ:

trungto.in
Màn hình
(a + b)*(a – b)
a b + a b - *




Thang điểm:
Phần 1: 3 điểm
Phần 2: 5 điểm
Trả lời các câu hỏi của giám khảo: 2 điểm


ĐỀ THI HẾT HỌC PHẦN - MÔN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
ĐỀ SỐ 05
Đề thi gồm 02 trang - Sinh viên làm bài trong 60 phút

Họ và tên sinh viên: Lớp:
Mã sinh viên:


Phần 1. (Sinh viên trả lời bằng cách ghi ra kết quả mà không cần giải thích gì thêm)

1. Viết các phần tử của mảng a[] = {-1, 0, -7, 5, 10} tại mỗi giai đoạn i khi áp dụng thuật toán
sắp xếp lựa chọn để sắp xếp a theo thứ tự giảm:
(i= 1) (i= 2)
(i= 3) (i= 4)

2. Viết các phần tử của mảng a[] = {-11, 1, -7, 5, -15} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp nổi bọt để sắp xếp a theo thứ tự tăng:
(i= 5) (i= 4)
(i= 3) (i= 2)

3. Viết các phần tử của mảng a[] = {1, 10, -7, 5, -1} tại mỗi giai đoạn i khi áp dụng thuật toán
sắp xếp xen vào để sắp xếp a theo thứ tự giảm:
(i= 1) (i= 2)
(i= 3) (i= 4)



4. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên -1, 0,
15, -5, -2, 5, 8, 1, 10, 31 khi thực hiện phép duyệt cây theo thứ tự trước:


5. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên -1, 0,
15, -5, -2, 5, 8, 1, 10, 31 khi thực hiện phép duyệt cây theo thứ tự sau:


6. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên -1, 0,
15, -5, -2, 5, 8, 1, 10, 31 khi thực hiện phép duyệt cây theo thứ tự giữa:




Phần 2. (Lập trình)
Cho file dữ liệu hauto.in gồm một dòng ghi lại một biểu thức hau tố bao gồm các toán
hạng là các số tự nhiên không vượt quá 10
3
, toán tử là các phép toán +, -, *, / và ^.
Hãy sử dụng cấu trúc dữ liệu kiểu ngăn xếp viết chương trình tính giá trị biểu thức hậu
tố trong file hauto.in. Giá trị của biểu thức hậu tố tìm được được ghi ra màn hình.
Ví dụ:

hauto.in
Màn hình
3 2 + 3 2 - *
5



Thang điểm:
Phần 1: 3 điểm
Phần 2: 5 điểm
Trả lời các câu hỏi của giám khảo: 2 điểm


ĐỀ THI HẾT HỌC PHẦN - MÔN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
ĐỀ SỐ 06
Đề thi gồm 02 trang - Sinh viên làm bài trong 60 phút

Họ và tên sinh viên: Lớp:
Mã sinh viên:


Phần 1. (Sinh viên trả lời bằng cách ghi ra kết quả mà không cần giải thích gì thêm)

1. Viết các phần tử của mảng a[] = {-1, 10, -7, 5, 5} tại mỗi giai đoạn i khi áp dụng thuật toán
sắp xếp lựa chọn để sắp xếp a theo thứ tự tăng:
(i= 1) (i= 2)
(i= 3) (i= 4)

2. Viết các phần tử của mảng a[] = {-11, -10, -7, 5, 15} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp nổi bọt để sắp xếp a theo thứ tự giảm:
(i= 5) (i= 4)
(i= 3) (i= 2)

3. Viết các phần tử của mảng a[] = {11, 10, -7, 15, -1} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp xen vào để sắp xếp a theo thứ tự tăng:
(i= 1) (i= 2)

(i= 3) (i= 4)


4. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 2, 1,
15, -5, -2, 25, 8, 31, 10, 13 khi thực hiện phép duyệt cây theo thứ tự giữa:


5. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 2, 1,
15, -5, -2, 25, 8, 31, 10, 13 khi thực hiện phép duyệt cây theo thứ tự trước:


6. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 2, 1,
15, -5, -2, 25, 8, 31, 10, 13 khi thực hiện phép duyệt cây theo thứ tự sau:




Phần 2. (Lập trình)
Cho dãy gồm N số nguyên A[] = {a
1
, a
2
, , a
N
} và số tự nhiên K ( K

N

100). Hãy viết
chương trình liệt kê tất cả các dãy con K phần tử giảm của dãy số A[].

Dữ liệu vào cho bởi file dayso.in theo khuôn dạng sau:
 Dòng đầu tiên ghi lại hai số tự nhiên N, K. Hai số được viết cách nhau một vài khoảng
trống;
 Những dòng kế tiếp ghi lại N số nguyên của dãy số A[], hai số khác nhau được viết cách
nhau một vài khoảng trống.
Các dãy con K phần tử giảm dần của dãy số A[] tìm được ghi ra màn hình theo khuôn
dạng:
 Mỗi dòng in ra một dãy con. Hai phần tử khác nhau của dãy con được viết cách nhau
bởi một vài khoảng trống.
 Dòng cuối in ra số tự nhiên M là số các dãy con K phần tử giảm của dãy số A[] tìm
được;

Ví dụ:

dayso.in
Màn hình
5 3
5 2 4 3 1
5 2 1
5 4 3
5 4 1
5 3 1
4 3 1
5


Thang điểm:
Phần 1: 3 điểm
Phần 2: 5 điểm
Trả lời các câu hỏi của giám khảo: 2 điểm



ĐỀ THI HẾT HỌC PHẦN - MÔN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
ĐỀ SỐ 07
Đề thi gồm 02 trang - Sinh viên làm bài trong 60 phút

Họ và tên sinh viên: Lớp:
Mã sinh viên:


Phần 1. (Sinh viên trả lời bằng cách ghi ra kết quả mà không cần giải thích gì thêm)

1. Viết các phần tử của mảng a[] = {-12, 10, -7, 5, 17} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp lựa chọn để sắp xếp a theo thứ tự giảm:
(i= 1) (i= 2)
(i= 3) (i= 4)

2. Viết các phần tử của mảng a[] = {-11, 10, -17, 25, 15} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp nổi bọt để sắp xếp a theo thứ tự tăng:
(i= 5) (i= 4)
(i= 3) (i= 2)

3. Viết các phần tử của mảng a[] = {11, 12, -7, -15, -1} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp xen vào để sắp xếp a theo thứ tự giảm:
(i= 1) (i= 2)
(i= 3) (i= 4)


4. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên -21,
10, 15, -5, -2, 25, 8, 1, -10, 30 khi thực hiện phép duyệt cây theo thứ tự trước:



5. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên -21,
10, 15, -5, -2, 25, 8, 1, -10, 30 khi thực hiện phép duyệt cây theo thứ tự giữa:


6. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên -21,
10, 15, -5, -2, 25, 8, 1, -10, 30 khi thực hiện phép duyệt cây theo thứ tự sau:




Phần 2. (Lập trình)
Viết chương trình tìm X = (x
1
, x
2
, ,x
n
) và giá trị f(X) của hàm



n
i
iin
xcxxxf
1
21
), ,,(

đạt giá trị
nhỏ nhất. Trong đó,
   









n
i
iiin
xbxaDxxxX
1
21
1,0;, ,,
, c
i
, a
i
, là các số nguyên, n, b là
các số tự nhiên, n

100.

Dữ liệu vào n, c
j

, a
j
, b được cho trong file data.in theo khuôn dạng sau:
 Dòng đầu tiên ghi lại số tự nhiên n và b. Hai số được ghi cách nhau bởi một vài ký tự
trống;
 Dòng kế tiếp ghi lại n số nguyên c
i
(i=1, 2, , n). Hai số được ghi cách nhau bởi một vài
ký tự trống;
 Dòng cuối cùng ghi lại n số nguyên a
i
(i = 1, 2, ,n). Hai số được ghi cách nhau bởi một
vài ký tự trống.
Giá trị tối ưu f(x
1
,x
2
, ,x
n
) và phương án tối ưu X = (x
1
, x
2
, ,x
n
) tìm được ghi ra màn hình theo
khuôn dạng sau:
 Dòng đầu tiên in ra giá trị nhỏ nhất f(x
1
,x

2
, ,x
n
);
 Dòng kế tiếp in ra phương án tối ưu tương ứng X = (x
1
, x
2
, ,x
n
). Hai phần tử khác nhau
của X được ghi cách nhau bởi một vài khoảng trống.
Ví dụ:

Data.in
Màn hình
4 10
-5 -1 9 -3
5 3 6 4
-8
1 0 0 1




Thang điểm:
Phần 1: 3 điểm
Phần 2: 5 điểm
Trả lời các câu hỏi của giám khảo: 2 điểm



ĐỀ THI HẾT HỌC PHẦN - MÔN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
ĐỀ SỐ 08
Đề thi gồm 02 trang - Sinh viên làm bài trong 60 phút

Họ và tên sinh viên: Lớp:
Mã sinh viên:


Phần 1. (Sinh viên trả lời bằng cách ghi ra kết quả mà không cần giải thích gì thêm)

1. Viết các phần tử của mảng a[] = {-2, 10, -7, 25, 1} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp lựa chọn để sắp xếp a theo thứ tự tăng:
(i= 1) (i= 2)
(i= 3) (i= 4)

2. Viết các phần tử của mảng a[] = {-1, 0, 7, 5, 1} tại mỗi giai đoạn i khi áp dụng thuật toán
sắp xếp nổi bọt để sắp xếp a theo thứ tự giảm:
(i= 5) (i= 4)
(i= 3) (i= 2)

3. Viết các phần tử của mảng a[] = {3, 10, -7, 5, -1} tại mỗi giai đoạn i khi áp dụng thuật toán
sắp xếp xen vào để sắp xếp a theo thứ tự giảm:
(i= 1) (i= 2)
(i= 3) (i= 4)


4. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên -1, 10,
15, -5, -2, 25, 8, 1, -10, 50 khi thực hiện phép duyệt cây theo thứ tự sau:



5. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên -1, 10,
15, -5, -2, 25, 8, 1, -10, 50 khi thực hiện phép duyệt cây theo thứ tự trước:


6. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên -1, 10,
15, -5, -2, 25, 8, 1, -10, 50 khi thực hiện phép duyệt cây theo thứ tự giữa:




Phần 2. (Lập trình)
Cho dãy gồm N số nguyên A[] = {a
1
, a
2
, , a
N
} và số tự nhiên K ( K

N

100). Hãy viết
chương trình liệt kê tất cả các dãy con K phần tử tăng của dãy số A[].
Dữ liệu vào cho bởi file dayso.in theo khuôn dạng sau:
 Dòng đầu tiên ghi lại hai số tự nhiên N, K. Hai số được viết cách nhau một vài khoảng
trống;
 Những dòng kế tiếp ghi lại N số nguyên của dãy số A[], hai số khác nhau được viết cách
nhau một vài khoảng trống.
Các dãy con K phần tử tăng dần của dãy số A[] tìm được ghi ra màn hình theo khuôn

dạng:
 Mỗi dòng in ra một dãy con. Hai phần tử khác nhau của dãy con được viết cách nhau
bởi một vài khoảng trống.
 Dòng cuối in ra số tự nhiên M là số các dãy con K phần tử tăng dần của dãy số A[] tìm
được;

Ví dụ:

dayso.in
Màn hình
5 3
1 2 4 3 1
1 2 4
1 2 3
2



Thang điểm:
Phần 1: 3 điểm
Phần 2: 5 điểm
Trả lời các câu hỏi của giám khảo: 2 điểm


ĐỀ THI HẾT HỌC PHẦN - MÔN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
ĐỀ SỐ 09
Đề thi gồm 02 trang - Sinh viên làm bài trong 60 phút

Họ và tên sinh viên: Lớp:
Mã sinh viên:



Phần 1. (Sinh viên trả lời bằng cách ghi ra kết quả mà không cần giải thích gì thêm)

1. Viết các phần tử của mảng a[] = {-1, 10, -7, 5, -1} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp lựa chọn để sắp xếp a theo thứ tự tăng:
(i= 1) (i= 2)
(i= 3) (i= 4)

2. Viết các phần tử của mảng a[] = {-7, 10, -7, 5, 15} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp nổi bọt để sắp xếp a theo thứ tự giảm:
(i= 5) (i= 4)
(i= 3) (i= 2)

3. Viết các phần tử của mảng a[] = {1, 10, -7, 5, -1} tại mỗi giai đoạn i khi áp dụng thuật toán
sắp xếp xen vào để sắp xếp a theo thứ tự tăng:
(i= 1) (i= 2)
(i= 3) (i= 4)

4. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên -21,
10, 15, -5, -2, 25, 8, 1, -10, 30 khi thực hiện phép duyệt cây theo thứ tự giữa:


5. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên -21,
10, 15, -5, -2, 25, 8, 1, -10, 30 khi thực hiện phép duyệt cây theo thứ tự trước:


6. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên -21,
10, 15, -5, -2, 25, 8, 1, -10, 30 khi thực hiện phép duyệt cây theo thứ tự sau:






Phần 2. (Lập trình)
Cho đồ thị vô hướng G =<V, E> gồm N đỉnh và M cạnh được biểu diễn dưới dạng danh
sách kề trong file dske.in theo khuôn dạng sau:
 Dòng đầu tiên ghi lại số tự nhiên N là số đỉnh của đồ thị;
 N dòng kế tiếp mỗi dòng ghi lại danh sách kề của đỉnh tương ứng. Hai đỉnh trong cùng
một danh sách kề được phân biệt với nhau bằng một hoặc vài kí tự trống, đỉnh không có
cạnh nối với nó (đỉnh cô lập) được ghi giá trị 0.
Hãy viết chương trình chuyển đổi biểu diễn đồ thị G dưới dạng danh sách kề thành biểu
diễn của đồ thị G dưới dạng ma trận kề và danh sách cạnh. Khuôn dạng biểu diễn đồ thị G
dưới dạng ma trận kề, danh sách kề được ghi lại trong file mtke.out và dscanh.out theo khuôn
dạng sau:
Khuôn dạng file mtke.out:
 Dòng đầu tiên ghi lại số tự nhiên n là số đỉnh của đồ thị;
 N dòng kế tiếp ghi lại ma trận kề của đồ thị, hai phần tử khác nhau của ma trận kề
được ghi cách nhau bởi một vài ký tự trống.
Khuôn dạng file dscanh.out
 Dòng đầu tiên ghi lại số tự nhiên N và M tương ứng với số đỉnh và số cạnh của đồ
thị, hai số được ghi cách nhau bởi một vài ký tự trống;
 M dòng kế tiếp mỗi dòng ghi lại một cạnh của đồ thị, đỉnh đầu và đỉnh cuối của mỗi
cạnh được ghi cách nhau bởi một vài ký tự trống.
Ví dụ đồ thị gồm 5 đỉnh, 4 cạnh được biểu diễn trong file dske.in như dưới đây sẽ cho ta các
file mtke.out và dscanh.out tương ứng.

dske.in
mtke.out
dscanh.out

5
2 3
1 4
1 5
2
3
5
0 1 1 0 0
1 0 0 1 0
1 0 0 0 1
0 1 0 0 0
0 0 1 0 0
5 4
1 2
1 3
2 4
3 5


Thang điểm:
Phần 1: 3 điểm
Phần 2: 5 điểm
Trả lời các câu hỏi của giám khảo: 2 điểm


ĐỀ THI HẾT HỌC PHẦN - MÔN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
ĐỀ SỐ 10
Đề thi gồm 02 trang - Sinh viên làm bài trong 60 phút

Họ và tên sinh viên: Lớp:

Mã sinh viên:


Phần 1. (Sinh viên trả lời bằng cách ghi ra kết quả mà không cần giải thích gì thêm)

1. Viết các phần tử của mảng a[] = {-1, 10, 7, 5, 1} tại mỗi giai đoạn i khi áp dụng thuật toán
sắp xếp lựa chọn để sắp xếp a theo thứ tự giảm:
(i= 1) (i= 2)
(i= 3) (i= 4)

2. Viết các phần tử của mảng a[] = {12, 1, -7, 5, 15} tại mỗi giai đoạn i khi áp dụng thuật toán
sắp xếp nổi bọt để sắp xếp a theo thứ tự tăng:
(i= 5) (i= 4)
(i= 3) (i= 2)

3. Viết các phần tử của mảng a[] = {1, -10, -7, 5, -1} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp xen vào để sắp xếp a theo thứ tự giảm:
(i= 1) (i= 2)
(i= 3) (i= 4)

4. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 17,
10, -15, -5, -2, 25, 8, 1, 15, -33 khi thực hiện phép duyệt cây theo thứ tự giữa:


5. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 17,
10, -15, -5, -2, 25, 8, 1, 15, -33 khi thực hiện phép duyệt cây theo thứ tự trước:


6. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 17, 10,
-15, -5, -2, 25, 8, 1, 15, -33 khi thực hiện phép duyệt cây theo thứ tự sau:






Phần 2. (Lập trình)
Cho đồ thị có hướng G =<V,E> gồm N đỉnh và M cạnh được biểu diễn dưới dạng danh
sách kề trong file mtke.in theo khuôn dạng sau:
 Dòng đầu tiên ghi lại số tự nhiên N là số đỉnh của đồ thị;
 N dòng kế tiếp mỗi dòng chứa N số 0 hoặc 1 tương ứng một hàng của ma trận kề. Hai
số trên cùng 1 hàng được phân biệt với nhau bằng một hoặc vài kí tự trống.
Hãy viết chương trình chuyển đổi biểu diễn đồ thị G dưới dạng ma trận kề thành biểu diễn
của đồ thị G dưới dạng danh sách kề và danh sách cạnh. Khuôn dạng biểu diễn đồ thị G dưới
dạng danh sách kề và danh sách cạnh được ghi lại trong file dske.out và dscanh.out theo
khuôn dạng sau:
Khuôn dạng file dske.out:
 Dòng đầu tiên ghi lại số tự nhiên N là số đỉnh của đồ thị;
 N dòng kế tiếp, mỗi dòng ghi lại danh sách kề của đỉnh tương ứng. Hai đỉnh trong
cùng một danh sách kề được phân biệt với nhau bằng một hoặc vài kí tự trống, đỉnh
không có cạnh nối với nó (đỉnh cô lập) được ghi giá trị 0.

Khuôn dạng file dscanh.out
 Dòng đầu tiên ghi lại số tự nhiên N và M tương ứng với số đỉnh và số cạnh của đồ
thị, hai số được ghi cách nhau bởi một vài ký tự trống;
 M dòng kế tiếp mỗi dòng ghi lại một cạnh của đồ thị, đỉnh đầu và đỉnh cuối của mỗi
cạnh được ghi cách nhau bởi một vài ký tự trống.
Ví dụ đồ thị gồm 5 đỉnh, 4 cạnh được biểu diễn trong file mtke.in như dưới đây sẽ cho ta các
file dske.out và dscanh.out tương ứng.

mtke.in

dske.out
dscanh.out
5
0 1 0 0 0
1 0 1 1 0
1 0 0 0 0
0 0 0 0 1
0 0 1 0 0
5
2
1 3 4
1
5
3
5 7
1 2
2 1
2 3
2 4
3 1
4 5
5 3

Thang điểm:
Phần 1: 3 điểm
Phần 2: 5 điểm
Trả lời các câu hỏi của giám khảo: 2 điểm


ĐỀ THI HẾT HỌC PHẦN - MÔN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT

ĐỀ SỐ 11
Đề thi gồm 02 trang - Sinh viên làm bài trong 60 phút

Họ và tên sinh viên: Lớp:
Mã sinh viên:


Phần 1. (Sinh viên trả lời bằng cách ghi ra kết quả mà không cần giải thích gì thêm)

1. Viết các phần tử của mảng a[] = {0, 12, -7, -5, 1} tại mỗi giai đoạn i khi áp dụng thuật toán
sắp xếp lựa chọn để sắp xếp a theo thứ tự tăng:
(i= 1) (i= 2)
(i= 3) (i= 4)

2. Viết các phần tử của mảng a[] = {-11, 1, -7, 5, 15} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp nổi bọt để sắp xếp a theo thứ tự giảm:
(i= 5) (i= 4)
(i= 3) (i= 2)

3. Viết các phần tử của mảng a[] = {1, 10, -7, 5, -1} tại mỗi giai đoạn i khi áp dụng thuật toán
sắp xếp xen vào để sắp xếp a theo thứ tự tăng:
(i= 1) (i= 2)
(i= 3) (i= 4)


4. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 1, -10,
15, -5, -2, 25, 8, 12, 10, 0 khi thực hiện phép duyệt cây theo thứ tự sau:


5. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 1, -10,

15, -5, -2, 25, 8, 12, 10, 0 khi thực hiện phép duyệt cây theo thứ tự trước:


6. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 1, -10,
15, -5, -2, 25, 8, 12, 10, 0 khi thực hiện phép duyệt cây theo thứ tự giữa:




Phần 2. (Lập trình)
Cho đồ thị có hướng G = <V,E> gồm N đỉnh được biểu diễn dưới dạng ma trận kề trong file
dothi.in theo khuôn dạng sau:
 Dòng đầu tiên ghi số tự nhiên N tương ứng với số đỉnh của đồ thị;
 N dòng kế tiếp ghi lại ma trận kề của đồ thị, hai phần tử khác nhau của ma trận kề
được viết cách nhau một vài khoảng trống.
Hãy viết chương trình kiểm tra G có phải là đồ thị nửa Euler hay không? Nếu G là đồ
thị nửa Euler hãy xây dựng một đường đi Euler của đồ thị, ngược lại đưa ra thông báo “G
không là đồ thị nửa Euler”?. Các kết quả xuất ra màn hình.
Ví dụ với đồ thị dưới đây sẽ cho ta đường đi Euler : 2 - 3 - 4 - 1 - 2 – 4:

dothi.in
Màn hình
4
0 1 0 0
0 0 1 1
0 0 0 1
1 0 0 0
2 - 3 - 4 - 1 - 2 – 4




Thang điểm:
Phần 1: 3 điểm
Phần 2: 5 điểm
Trả lời các câu hỏi của giám khảo: 2 điểm


ĐỀ THI HẾT HỌC PHẦN - MÔN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
ĐỀ SỐ 12
Đề thi gồm 02 trang - Sinh viên làm bài trong 60 phút

Họ và tên sinh viên: Lớp:
Mã sinh viên:


Phần 1. (Sinh viên trả lời bằng cách ghi ra kết quả mà không cần giải thích gì thêm)

1. Viết các phần tử của mảng a[] = {-10, 10, -7, 5, 1} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp lựa chọn để sắp xếp a theo thứ tự tăng:
(i= 1) (i= 2)
(i= 3) (i= 4)

2. Viết các phần tử của mảng a[] = {-11, 10, -7, 5, -15} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp nổi bọt để sắp xếp a theo thứ tự giảm:
(i= 5) (i= 4)
(i= 3) (i= 2)

3. Viết các phần tử của mảng a[] = {11, -10, -7, 5, -1} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp xen vào để sắp xếp a theo thứ tự giảm:
(i= 1) (i= 2)

(i= 3) (i= 4)


4. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 21,
10, 15, -5, -2, 25, 8, 1, -10, 30 khi thực hiện phép duyệt cây theo thứ tự trước:


5. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 21,
10, 15, -5, -2, 25, 8, 1, -10, 30 khi thực hiện phép duyệt cây theo thứ tự sau:


6. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 21,
10, 15, -5, -2, 25, 8, 1, -10, 30 khi thực hiện phép duyệt cây theo thứ tự giữa:




Phần 2. (Lập trình)
Cho đồ thị vô hướng G = <V,E> gồm N đỉnh được biểu diễn dưới dạng ma trận kề trong file
dothi.in theo khuôn dạng sau:
 Dòng đầu tiên ghi số tự nhiên N tương ứng với số đỉnh của đồ thị;
 N dòng kế tiếp ghi lại ma trận kề của đồ thị, hai phần tử khác nhau của ma trận kề
được viết cách nhau một vài khoảng trống.
Hãy viết chương trình kiểm tra G có phải là đồ thị nửa Euler hay không? Nếu G là đồ
thị nửa Euler hãy xây dựng một đường đi Euler của đồ thị, ngược lại đưa ra thông báo “G
không là đồ thị nửa Euler”? Các kết quả xuất ra màn hình.
Ví dụ với đồ thị dưới đây sẽ cho ta đường đi Euler : 2 - 1 - 3 - 2 - 4 - 3

dothi.in
Màn hình

4
0 1 0 1
1 0 1 1
0 1 0 1
1 1 1 0
2 - 3 - 4 - 1 - 2 – 4


Thang điểm:
Phần 1: 3 điểm
Phần 2: 5 điểm
Trả lời các câu hỏi của giám khảo: 2 điểm


ĐỀ THI HẾT HỌC PHẦN - MÔN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
ĐỀ SỐ 13
Đề thi gồm 02 trang - Sinh viên làm bài trong 60 phút

Họ và tên sinh viên: Lớp:
Mã sinh viên:


Phần 1. (Sinh viên trả lời bằng cách ghi ra kết quả mà không cần giải thích gì thêm)

1. Viết các phần tử của mảng a[] = {-1, 10, -7, 5, 1} tại mỗi giai đoạn i khi áp dụng thuật toán
sắp xếp lựa chọn để sắp xếp a theo thứ tự giảm:
(i= 1) (i= 2)
(i= 3) (i= 4)

2. Viết các phần tử của mảng a[] = {-11, 10, -7, 5, 15} tại mỗi giai đoạn i khi áp dụng thuật

toán sắp xếp nổi bọt để sắp xếp a theo thứ tự tăng:
(i= 5) (i= 4)
(i= 3) (i= 2)

3. Viết các phần tử của mảng a[] = {11, 10, -7, 5, -1} tại mỗi giai đoạn i khi áp dụng thuật
toán sắp xếp xen vào để sắp xếp a theo thứ tự tăng:
(i= 1) (i= 2)
(i= 3) (i= 4)


4. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 21,
10, 15, -5, -2, 25, 8, 1, -4, -30 khi thực hiện phép duyệt cây theo thứ tự giữa:


5. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 21,
10, 15, -5, -2, 25, 8, 1, -4, -30 khi thực hiện phép duyệt cây theo thứ tự sau:


6. Viết các phần tử của cây nhị phân AVL được tạo từ các nút có khóa là các số nguyên 21,
10, 15, -5, -2, 25, 8, 1, -4, -30 khi thực hiện phép duyệt cây theo thứ tự trước:


×