Tải bản đầy đủ (.doc) (3 trang)

Đề thi môn kỹ thuật lập trình

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 (111.4 KB, 3 trang )

Lối vào

Lối ra

ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM
KHOA: CÔNG NGHỆ THÔNG TIN
BỘ MÔN: TIN HỌC CƠ SỞ

Đề thi môn: Kỹ thuật lập trình
Mã môn học: PRTE240385
Học kỳ 1 năm học 2014-2015
Đề số 01. Đề thi có 2 trang.
Thời lượng: 80 phút.
Được phép sử dụng tài liệu giấy.

Câu 1: (8 điểm)
A (học ngành Chăn nuôi Trồng trọt) trồng được một vườn táo gồm N hàng, mỗi
hàng có N cây táo. Mỗi cây có một số lượng quả khác nhau được minh họa như hình
bên dưới (N=5). Một hôm có cậu bạn thân B (vốn đang theo học ngành Công nghệ
Thông tin) về chơi. A bèn dẫn B đi thăm vườn táo và đặt ra một bài toán như sau:
- B được quyền chọn một cây táo bất kỳ ở hàng đầu tiên cạnh lối vào làm điểm
xuất phát. Khi đến cây táo nào thì được quyền hái toàn bộ số táo có trên cây
đó.
- Mỗi hàng táo chỉ được phép chọn 1 cây. Khi sang hàng tiếp theo thì chỉ được
chọn 1 trong 3 cây gần với cây đang đứng nhất. Trường hợp đã ra đến bìa
vườn (bìa trên hoặc bìa dưới) thì chỉ còn lại 2 khả năng để đi tiếp.
- B phải đi hái làm sao để khi ra khỏi vườn, tổng số táo thu được là N HIỀU
NHẤT.

5
8


2
4
1

2
4
1
6
2

4
3
0
7
3

1
2
4
8
4

0
5
6
2
5

Yêu cầu:
Sử dụng ngôn ngữ lập trình C/C++ để viết chương trình thực hiện các công việc sau:

a) (2đ) Cho tập tin văn bản đầu vào có tên là INPUT.TXT lưu nội dung của một
ma trận vuông cấp N với cấu trúc như sau:
- Dòng đầu của tập tin lưu trữ 1 số nguyên dương N (0của ma trận.
- Từ dòng thứ 2 trở đi mỗi dòng lưu N số nguyên không âm, là giá trị từng
dòng của ma trận.

Số hiệu: BM1/QT-PĐT-RĐTV/00

Trang 1/2


Viết hàm mở và đọc dữ liệu từ tập tin INPUT.TXT trên, lưu vào biến N và ma
Lối ra
trận vuông A Lối
cấp vào
N.
b) (3đ) Đề xuất và cài đặt một giải thuật theo phương pháp tham lam (Greedy)
để giúp B giải nhanh bài toán trên với kết quả tương đối tốt (có thể chưa phải
là tốt nhất). Ví dụ như hình dưới, các ô in đậm là đường đi, tổng số táo thu
được là 8+4+4+2+6 = 24 quả.
5
8
2
4
1

2
4
1

6
2

4
3
0
7
3

1
2
4
8
4

0
5
6
2
5

Khai báo hàm gợi ý như sau:
int thamlam(int A[][20], int N, int path[]);
Hàm trả về tổng số táo hái được; mảng path[] lưu các vị trí đi qua.
c) (3đ) Cài đặt (các) hàm sử dụng phương pháp quay lui và vét cạn để xét tất cả
các đường đi có thể có nhằm giúp A tìm ra lời giải tối ưu cho bài toán (số táo
thu được là nhiều nhất). VD như hình dưới, tổng số táo thu được là 31 quả.
5
8
2

4
1

2
4
1
6
2

4
3
0
7
3

1
2
4
8
4

0
5
6
2
5

Khai báo hàm gợi ý như sau:
int vetcan(int A[][20], int N, int path[]);
Hàm trả về tổng số táo hái được nhiều nhất; mảng path[] lưu các vị trí đi qua.

Câu 2: (2 điểm)
Hãy áp dụng phương pháp quy hoạch động để viết hàm tìm giá trị phần tử thứ n
trong dãy số Fibonacci sao cho hàm có độ phức tạp tính toán là O(n). Dãy số được
xây dựng theo quy tắc như sau:
- 2 phần tử đầu tiên của dãy có giá trị bằng 1;
- Từ phần tử thứ 3 trở đi, giá trị của nó bằng tổng giá trị của 2 phần tử liền
kề trước nó.
VD: 10 phần tử đầu của dãy là 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,…
Ghi chú: CBCT không giải thích đề thi

Số hiệu: BM1/QT-PĐT-RĐTV/00

Trang 2/2


TP. HCM, ngày……. tháng …… năm 2015

Trưởng bộ môn

Số hiệu: BM1/QT-PĐT-RĐTV/00

Trang 3/2



×