Câu hỏi:
12/07/2024 172Với các bài toán sau, em hãy thảo luận với bạn để tìm kĩ thuật tìm kiếm đã học (tìm kiếm trên các mảng 1 hoặc 2 chiều) để giải.
1. Cho trước số tự nhiên n. Tìm và in ra tất cả các xâu nhị phân có độ dài n.
2. Viết chương trình tìm và liệt kê tất cả các hoán vị của tập hợp [1, 2, ..., n] với n là số tự nhiên cho trước.
Sách mới 2k7: Tổng ôn Toán, Lí, Hóa, Văn, Sử, Địa…. kỳ thi tốt nghiệp THPT Quốc gia 2025, đánh giá năng lực (chỉ từ 110k).
Quảng cáo
Trả lời:
1. Để giải quyết bài toán tìm tất cả các xâu nhị phân có độ dài n, ta có thể sử dụng kỹ thuật duyệt vét cạn trên mảng một chiều có độ dài n. Với mỗi phần tử trong mảng, ta sẽ thử đặt giá trị 0 hoặc 1 vào đó và tiếp tục thử đặt giá trị cho các phần tử tiếp theo. Khi đã duyệt hết tất cả các phần tử trong mảng, ta sẽ có được một xâu nhị phân độ dài n. Quá trình này sẽ được lặp lại cho đến khi tất cả các xâu nhị phân độ dài n đã được tìm thấy.
2. Để giải quyết bài toán tìm tất cả các hoán vị của tập hợp [1, 2, ..., n], ta có thể sử dụng kỹ thuật đệ quy. Với mỗi số trong tập hợp [1, 2, ..., n], ta đưa số đó vào một mảng và gọi lại hàm đệ quy với tập hợp [1, 2, ..., n] đã loại bỏ số đó. Quá trình đệ quy sẽ được tiếp tục cho đến khi tất cả các số đã được sử dụng trong mảng, lúc đó ta sẽ có được một hoán vị của tập hợp [1, 2, ..., n]. Quá trình này sẽ được lặp lại cho đến khi tất cả các hoán vị của tập hợp [1, 2, ..., n] đã được tìm thấy.
CÂU HỎI HOT CÙNG CHỦ ĐỀ
Câu 1:
Viết chương trình cho phép người dùng nhập một số nguyên dương N từ bàn phím, sau đó in ra toàn bộ các số hoàn hảo nhỏ hơn N. Số hoàn hảo là số có giá trị bằng tổng số các ước số của nó, không kể chính nó.
Câu 2:
Viết chương trình cho phép người dùng nhập một số nguyên dương N từ bàn phím rồi in ra số có nhiều ước số nhất trong các số nhỏ hơn N.
Câu 3:
Cho A, B, C, D lần lượt là các danh sách tên học sinh, điểm thi môn Toán, điểm thi môn Vật lí và điểm thi môn Hoá học. Danh sách điểm Toán được sắp xếp theo thứ tự tăng dần và các danh sách tên học sinh và điểm các môn còn lại được sắp xếp theo tương ứng.
A = [“Nam”, “Sơn”, “Hương”, “Huyền”, “Hà”, “Hùng”
B = [8.3, 8.4, 8.7, 8.9, 9.1.96]
C= [ 8.3, 7.8, 8.9, 9.5, 9.3, 9.0]
D= [7.9, 9.0, 8.9, 8.2, 9.5, 9.1]
Hãy thảo luận về kĩ thuật tìm kiếm được thực hiện với mỗi yêu cầu sau:
a) Tìm một học sinh có điểm Toán lớn hơn điểm Vật lí.
b) Tìm tất cả các học sinh có điểm Vật lí lớn hơn điểm Hoá học.
c) Tìm tất cả các học sinh có cả 3 điểm đều lớn hơn hoặc bằng 9.
Câu 4:
Cho trước dãy n số nguyên. Viết chương trình đếm và liệt kê tất cả các bộ 3 phần tử liền nhau của dãy thoả mãn điều kiện ba số này là 3 số nguyên liên tiếp (có thể tăng dần hoặc giảm dần).
Câu 5:
Với bài toán trong Hoạt động 1, em hãy viết thêm các lệnh để tìm ra 3 học sinh có tổng điểm lớn nhất.
Câu 6:
Một mảng hai chiều kích thước m×n thi duyệt vét cạn sẽ phải duyệt qua tổng số bao nhiêu phần tử?
về câu hỏi!