btvn.vn
Tìm kiếm Đăng nhập

Đếm và liệt kê phần tử chung

Lưu trên thiết bị này
Chuyên đề lựa chọn CS: Kĩ thuật duyệt · Chọn bài khác

Tìm chỉ số trước khi lấy danh sách

```python def find_name(names, target): for i in range(len(names)): if names[i] == target: return i return -1 ``` Sau read_lists, gọi find_name cho từng tên cần so. Nếu một chỉ số là −1, phải báo không có tên trong tệp trước khi đọc lists[index]. Trong Python, lists[−1] có thể lấy danh sách cuối khi tệp không rỗng; đó không phải dữ liệu của tên đang tìm. Tên mẫu có khoảng trắng nên khi chạy lệnh, đặt từng tên trong dấu nháy, chẳng hạn "Mẫu A" "Mẫu B".

Kiểm thuộc danh sách còn lại

```python def common_values(A, B): result = [] for value in A: if value in B: result.append(value) return result ``` Hai danh sách đầu vào không có phần tử trùng. Với mỗi value của A, phép value in B kiểm xem có xuất hiện ở B hay không. Nếu có thì thêm vào result. Số lượng là len(result), cùng một kết quả dùng để đếm và in nên không lệch nhau. Duyệt tiếp tới hết A để giữ mọi phần tử chung. Với dữ liệu mẫu: | Chỉ ở A | Chung A và B | Chỉ ở B | |---|---|---| | P1 | P2,P3,P4 | P5 | Kết quả theo thứ tự danh sách A là [P2,P3,P4], số lượng3. Phần tử P1 bị bỏ vì không nằm trong B; P5 không nằm trong A nên không được thêm.

Chạy và kiểm cả số lượng lẫn tên

Tải mã và tệp liên hệ vào cùng thư mục rồi chạy: ```text python3 g11-cs-danh-sach-chung.py chung g11-cs-lien-he.inp "Mẫu A" "Mẫu B" ``` Cần thấy số 3 và danh sách[P2,P3,P4]. Thử Mẫu A với Mẫu D để nhận 0 và[]; thử một tên không có trong tệp để nhận thông báo phù hợp, không lấy nhầm dòng cuối. Với A dài m và B dài n, phép in trên danh sách có thể phải tìm qua n phần tử; vòng ngoài duyệt m phần tử nên cách này có bậc O(mn) trong trường hợp xấu nhất. Có một vòng for viết ra chưa có nghĩa toàn bộ công việc chỉ O(m).

Bài luyện

Với tệp mẫu, danh sách chung của Mẫu A và Mẫu B là gì?
Chọn một đáp án

Bài luyện

find_name trả −1 cho tên chưa có. Cần làm gì trước khi đọc lists[index]?
Chọn một đáp án

Bài luyện

Vì sao cần duyệt tiếp sau khi tìm thấy P2 chung?
Chọn một đáp án

Bài luyện

Nếu danh sách chung là[], số lượng cần in là gì?
Chọn một đáp án

Đang học