Giúp thuật toán bài tập về Stack

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 ạ

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:

  1. Nhét 1 xe vào kho
  2. Đư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?

2 Likes

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 :face_with_monocle:

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.

1 Like

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ó.

2 Likes

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.

1 Like

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.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?