Bài tập về Stack mà em chưa hiểu thuật toán các bác gúp em với ạ
Giúp thuật toán bài tập về Stack
Cái này cần gì thuật toán nhỉ. Đây giống như trò chơi cho trẻ con thôi.
Bạn có 2 lựa chọn:
- Nhét 1 xe vào kho
- Đưa 1 xe ra khỏi kho
Xét trường hợp (3, 2, 5, 6, 4, 1), ở đầu vào đang có các xe 1, 2, 3, 4, 5, 6 đang xếp hàng, bạn làm thế nào để đưa xe số 3 ra?
cho từng xe từ dãy 1 2 3 4 5 6 vào trong kho(stack) rồi so sánh từng phần tử xem nếu bằng 3 thì lấy ra xe đấy ra đúng ko ak
Vậy bạn làm từng bước như thế nào? Quan trọng là bạn phải giải tay được.
Giả sử bên trái(vào kho) là 1 2 3 4 5 6
Bên phải (ra kho) là : 3 2 5 6 4 1
- Cho toa 1 bên trái vào stack so sánh != 3 không chọn
- Tiếp tục cho 2 cx != 3 ko chọn
- Cho 3 = 3 lấy ra toa phải
- thế thì có 2 = 2 lấy ra toa phải
Em hiểu được như này nhưng phần cụ thể hóa thành code thì lại hơi rối a ak
Tìm hiểu: How to use Stack in ... language
trước.
Nếu ngôn ngữ không hỗ trợ sẵn thì tìm hiểu cách hiện thực.
Nếu ngôn ngữ hỗ trợ sẵn trong library thì tìm hiểu cách dùng.
Bạn làm xong cái data structure stack rồi hãy nghĩ tới giải thuật sử dụng nó.
Idea đã rõ rồi thì bạn tạo 1 biến index đại diện cho chỉ số trong dãy cần xét (arr). Khởi tạo index = 0.
Trước hết lấy ra arr[index]. Sau khi lấy ra arr[index] rồi thì tăng index lên 1.
bạn đã hiểu về stack, và hiểu đề bài chưa?
về stack thì ms biết cài đặt thôi ak, còn bài thì e hiểu rồi
nếu bạn đã hiểu đề, bạn hãy diễn giải ví dụ bằng lời, qua từng bước xem
Đầu tàu tiếp theo đi ra sẽ có số hiệu lớn nhất, vì vào sau cùng.
Vậy là code được rồi.