Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

TRƯỜNG ĐẠI HỌC BÁCH KHOA

KHOA: CÔNG NGHỆ THÔNG TIN


BỘ MÔN: CÔNG NGHỆ PHẦN MỀM

ĐỀ THI CUỐI KỲ
Tên học phần: TOÁN RỜI RẠC
Mã học phần: …………23T_nh16………… Số tín chỉ: 3
Phương pháp đánh giá (*): tự luận có giám sát Thời gian làm bài: 75 phút
Đề số: Đ0001
☐ Sinh viên được sử dụng tài liệu khi làm bài (tuy nhiên không được phép sử dụng
ChatGPT)
—-------------------------------------------------------------------------------------------------------------------------------
Họ tên: Nguyễn Văn Lợi Lớp:23T_Nhat1 MSSV:………102230026……………...
Sinh viên làm bài trực tiếp trên tệp này, lưu tệp với định dạng MSSV_HọTên.pdf và nộp bài thông
qua MSTeam:
Câu 1 (3 điểm) Gọi Bn là số chuỗi độ dài n được hình thành từ các ký tự {A, B, C, D, 1, 2, 3, 4, 5,
6, 7 }.
a) Đếm số chuỗi Bn sao cho Bn chỉ chứa đúng 2 ký tự số
# Trả lời: Trình bày và dán kết quả vào bên dưới:

Chuỗi B chỉ chứa đúng 2 kí tự số :

*n = 2 => chứa 2 số

Số chuỗi là = 21 chuỗi

*n= 3 => 2 số và 1 chữ

Số chuỗi là 4 * = 84 chuỗi

*n=4 =>2 số và 2 chữ

Số chuỗi là * = 126 chuỗi

* n =5 => 2 số và 3 chữ

Số chuỗi là * = 84 chuỗi

*n = 6=> 2 số và 4 chữ

Số chuỗi là

b) Lập hệ thức truy hồi để đếm số chuỗi Bn sao cho Bn không chứa hai ký tự số kề nhau.
# Trả lời: Trình bày cách xây dựng hệ thức truy hồi vào đây:
#Trả lời: Xác định điều kiện ban đầu của hệ thức truy hồi vào đây:

c) Hãy giải hệ thức truy hồi trên câu b)


# Trả lời: Trình bày cách giải ở đây:

# Trả lời: Công thức nghiệm nếu có:

Câu 2 ( 4 điểm) Cho tập X = {1, 2, …, n }, n ∈ 𝑍, 𝑛 ≥1.


a) Tìm hoán vị tiếp theo của hoán vị S = 653241 bằng phương pháp sinh
# Trả lời: Trình bày kết quả vào đây:

kết quả là : 653412

b) Viết chương trình liệt kê tập con k phần tử từ X (𝑘 ∈ 𝑍, 0≤ 𝑘 ≤n) sử dụng phương pháp sinh.
# Trả lời: Dán code vào đây:

#include<stdio.h>
int n ,nn, countt = 1;
void printA( int b[], int n){
for(int i = 1; i <= n ; i++){
printf("%d ",b[i]);
}
printf("\n");
}
void print_C(int i ,int b[], int c[],int count){
int j = i;

if(count == nn+1 ){
printf("%d : ",countt++);
printA(c,nn);
return;
}

while(j != n-nn+1+count){
c[count] = b[j];
print_C(j+1,b,c,count+1);
j++;
}

return;
}
int main(){
printf("khoi tao n = ");
scanf("%d",&n);
printf("\nnhap k = ");
scanf("%d",&nn);

int b[n+1];
for(int i = 0; i<=n; i++){
b[i] = i;
}
int c[nn+1];
print_C(1,b,c,1);

# Trả lời: Dán kết quả thực thi vào đây:

khoi tao n = 5

nhap k = 4
1:1234
2:1235
3:1245
4:1345
5:2345

# Trả lời: Giải thích chi tiết cấu hình đầu tiên, cấu hình kết thúc, thuật toán sinh:
cấu hình đầu tiên là : 1 2 3 4
cấu hình kết thúc là : 2 3 4 5
thuật toán :
𝑎1 < 𝑎2 < 𝑎3 < 𝑎4
sử dụng đệ quy theo từng lớp lớp ngoài cùng(𝑎𝑛) khi tăng đến max của X phần tử thì lớp phía trước nó
𝑎𝑖−1 tăng lên 1 giá trị và làm mới chạy với 𝑎𝑖−1+1 và chạy khi đến 𝑎0 = n - k + 1 thì dừng chương trình

c) Viết chương trình liệt kê tất cả các tập con của X sử dụng kết quả ở câu b)
# Trả lời: Dán code vào đây:
#include<stdio.h>
int n ,nn, countt = 1;
void printA( int b[], int n){
for(int i = 1; i <= n ; i++){
printf("%d ",b[i]);
}
printf("\n");
}
void print_C(int i ,int b[], int c[],int count){
int j = i;

if(count == nn+1 ){
printf("%d : ",countt++);
printA(c,nn);
return;
}
while(j != n-nn+1+count){
c[count] = b[j];
print_C(j+1,b,c,count+1);
j++;
}

return;
}
int main(){

printf("khoi tao n = ");


int m;
scanf("%d",&m);

for(int j = 0 ; j <= m; j++){


printf("k = %d\n",j);
n = m;
nn = j;
int b[n+1];
for(int i = 0; i<=m; i++){
b[i] = i;
}
int c[j+1];
print_C(1,b,c,1);
}
// print_C(b,1,3);

# Trả lời: Dán kết quả vào đây với trường hợp n = 4:
khoi tao n = 4
k=0
1:
k=1
2:1
3:2
4:3
5:4
k=2
6:12
7:13
8:14
9:23
10 : 2 4
11 : 3 4
k=3
12 : 1 2 3
13 : 1 2 4
14 : 1 3 4
15 : 2 3 4
k=4
16 : 1 2 3 4

Câu 3 ( 3 điểm) Cho phương trình X1 + X2 +....+ Xn = k


a) Viết chương trình liệt nghiệm không âm của phương trình trên bằng phương pháp sinh.
# Trả lời: Dán code vào đây:

# Trả lời: Dán kết quả thực thi vào đây:

b) Viết chương trình đếm nghiệm nguyên không âm của phương trình trên
# Trả lời: Dán code vào đây:

# Trả lời: Dán kết quả vào đây với trường hợp n = 5, k = 10

Tổng cộng có: 2 câu


Đà Nẵng, ngày 01 tháng 04 năm 2024
GIẢNG VIÊN BIÊN SOẠN ĐỀ THI TRƯỞNG BỘ MÔN
(đã ký)

You might also like