31.4. Cho trước dãy số bất kì A. Em hãy viết chương trình tìm và chỉ ra vị trí đầu tiên của dãy A...

Câu hỏi:

31.4. Cho trước dãy số bất kì A. Em hãy viết chương trình tìm và chỉ ra vị trí đầu tiên của dãy A mà 3 số hạng liên tiếp có giá trị là 1, 2, 3 (có thể tổng quát 3 số bất kì p, q, s). Nếu tìm thấy thì thông báo vị trí tìm thấy, nếu không thì thông báo "không tìm thấy mẫu".

Câu trả lời:
Người trả lời: GV. Đỗ Đăng Hạnh
Để viết câu trả lời đầy đủ và chi tiết hơn, ta có thể mô tả cách làm theo các bước sau:

Bước 1: Khai báo dãy số A và dãy p chứa mẫu cần tìm (trong trường hợp này là [1, 2, 3]).

Bước 2: Khai báo biến pkq (vị trí đầu tiên của mẫu nếu tìm thấy, ban đầu gán bằng -1) và biến i (chỉ số duyệt qua dãy A, ban đầu gán bằng 0).

Bước 3: Sử dụng vòng lặp while để duyệt qua dãy số A. Trong vòng lặp, kiểm tra nếu 3 phần tử liên tiếp bằng mẫu p thì lưu vị trí đầu tiên vào biến pkq và dừng vòng lặp. Nếu không tìm thấy, tăng chỉ số i lên 1.

Bước 4: Kiểm tra kết quả: Nếu pkq >= 0, in ra thông báo "Tìm thấy mẫu" và vị trí pkq. Nếu pkq < 0, in ra thông báo "Không tìm thấy mẫu".

Viết lại chương trình theo cách trên, ta có:

```python
A = [0, 4, 0, 1, 2, 3, 8, 9, 0, 1, 2, 3, 17, -16, 0, 1, 2]
p = [1, 2, 3]
pkq = -1
i = 0

while i < len(A) - 2 and pkq == -1:
if A[i:i+3] == p:
pkq = i
else:
i += 1

if pkq >= 0:
print("Tìm thấy mẫu", p, "tại vị trí", pkq)
else:
print("Không tìm thấy mẫu", p)
```

Chương trình trên sử dụng vòng lặp while để duyệt qua dãy số A và kiểm tra 3 phần tử liên tiếp bằng mẫu [1, 2, 3]. Nếu tìm thấy, in ra vị trí đầu tiên của mẫu đó. Nếu không tìm thấy, in ra thông báo không tìm thấy.
Bình luận (0)
Nhấn vào đây để đánh giá
Thông tin người gửi
0.42365 sec| 2194.047 kb