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

Đề xuất từ ít nhất ba nhóm 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

Điều kiện của mô hình trong bài

Tệp nhóm giả định có các danh sách: | Tài khoản | Nhóm tham gia | |---|---| | Mẫu A | Lập trình, Đọc sách, Cờ vua | | Mẫu B | Lập trình, Đọc sách, Cờ vua, Âm nhạc | | Mẫu C | Lập trình, Đọc sách, Âm nhạc | | Mẫu D | Âm nhạc | Theo quy tắc bài toán, hai tài khoản được đề xuất cho nhau nếu có **ít nhất 3 nhóm chung**. Đúng3 vẫn đủ; dùng>=3. Danh sách đề xuất không chứa chính tài khoản đang xét. Đây là quy tắc của dữ liệu thực hành trong bài.

Một danh sách mới cho mỗi tài khoản

```python def recommendations(names, groups): result = [] for i in range(len(names)): suggested = [] for j in range(len(names)): if i != j and len(common_values(groups[i], groups[j])) >= 3: suggested.append(names[j]) result.append((names[i], suggested)) return result ``` Vòng ngoài chọn i. Vòng trong xét các j khác i, đếm số nhóm chung rồi giữ names[j] nếu đạt ngưỡng. suggested=[] đặt trong vòng ngoài để kết quả của tài khoản trước không lọt sang tài khoản sau. Kết quả mẫu: A được đề xuất B; B được đề xuất A,C; C được đề xuất B; D không có đề xuất. Dù A có ba nhóm chung với chính A, điều kiện i!=j loại trường hợp ấy.

Kiểm đúng trường hợp bằng ngưỡng

Chạy: ```text python3 g11-cs-danh-sach-chung.py de-xuat g11-cs-nhom.inp ``` Đối chiếu từng hàng của kết quả với bảng. A và B có đúng 3 nhóm chung nên vẫn cần xuất. A và C chỉ chung Lập trình,Đọc sách nên không xuất cặp đó. Mẫu D có danh sách đề xuất[]; một tệp chỉ có một tài khoản cũng không đề xuất chính nó.

Bài luyện

A và B có đúng 3 nhóm chung. Theo quy tắc, có được đề xuất không?
Chọn một đáp án

Bài luyện

Vì sao phải kiểm i!=j?
Chọn một đáp án

Bài luyện

Vì sao suggested=[] nằm trong vòng ngoài?
Chọn một đáp án

Đang học