Vận dụngCâu hỏi 1. Cho dãy số A = A[0], A[1]. .... A[n — 1]. Thiết kế và viết chương trình kiểm tra...
Câu hỏi:
Vận dụng
Câu hỏi 1. Cho dãy số A = A[0], A[1]. .... A[n — 1]. Thiết kế và viết chương trình kiểm tra trong dãy A có hai phân tử nào trùng nhau hay không. Cần đưa ra câu trả lời là “có” hay “không”. Yêu cầu đưa ra quy trình thiết kế theo phương pháp làm mịn dần.
Câu trả lời:
Người trả lời: GV. Đỗ Đăng Hưng
Để giải quyết bài toán trên, chúng ta có thể sử dụng phương pháp duyệt từng phần tử trong dãy và kiểm tra xem phần tử đó đã xuất hiện trước đó chưa. Dưới đây là một số cách để thực hiện:Cách 1:- Khởi tạo một mảng hash_set để lưu trữ các phần tử đã xuất hiện.- Duyệt từng phần tử trong mảng A, nếu phần tử đó đã tồn tại trong hash_set thì trả về "có" (tức là có hai phần tử trùng nhau), ngược lại thì thêm phần tử đó vào hash_set.- Sau khi duyệt hết mảng A mà không có phần tử nào trùng nhau, trả về "không".Cách 2:- Sắp xếp mảng A.- Duyệt từng phần tử trong mảng A, nếu phần tử đó trùng với phần tử liền sau nó thì trả về "có".- Nếu không có phần tử nào trùng nhau sau khi duyệt hết mảng A, trả về "không".Cách 3:- Sử dụng hàm find_index như đã được cung cấp. - Duyệt từng phần tử trong mảng A và gọi hàm find_index để tìm xem phần tử đó đã xuất hiện trước đó chưa. Nếu hàm trả về giá trị khác -1 thì đó là phần tử trùng nhau và trả về "có".Ví dụ cụ thể với cách 1 (sử dụng hash_set):```cpp#include #include using namespace std;bool checkDuplicates(int A[], int n) { unordered_set hash_set; for (int i = 0; i < n; i++) { if (hash_set.find(A[i]) != hash_set.end()) { return true; // Phát hiện phần tử trùng nhau } hash_set.insert(A[i]); } return false; // Không có phần tử trùng}int main() { int A[] = {1, 2, 3, 4, 5, 2}; int n = sizeof(A) / sizeof(A[0]); if (checkDuplicates(A, n)) { cout << "Có"; } else { cout << "Không"; } return 0;}```Câu trả lời cho câu hỏi trên là: "Có".
Câu hỏi liên quan:
- Khởi độngPhương pháp làm mịn dần là một trong các cách tiếp cận tổng quát khi giải quyết các bài...
- Luyện tậpCâu hỏi 1. Thiết kế thuật toán cho nhiệm vụ 1 với ý tưởng khác như sau: Dãy A là một hoán...
- Câu hỏi 2. Trong Nhiệm vụ 2, nếu dãy A đã được sắp xếp theo thứ tự tăng dần thì có thể cải tiến...
- Vận dụngCâu hỏi 1. Cho dãy số A = A[0], A[1]. .... A[n - 1]. Thiết kế và viết chương trình kiểm tra...
- Câu hỏi 2. Xâu kí tự được gọi là đối xứng nêu thay đổi thứ tự ngược lại các kí tự của xâu thì vẫn...
Bình luận (0)