trang chủ / đề bài / voi12_ham

Khoảng cách Hamming

Đề bài

Mô tả

Các phân tử trong tế bào sinh học được cấu tạo từ 4 loại nuclêôtit cơ bản ký hiệu bởi các chữ cái A,X,T,G. Mỗi gen di truyền được cấu tạo thành bởi một chuỗi các nuclêôtit với độ dài được tính bằng số lượng nuclêôtit. Ví dụ, AXXTTGAT là một gen có độ dài 8.

Trong một chuyến đi khảo sát, Giáo sư Altein phát hiện ra một gen lạ gồm n nuclêôtit được xếp trên một vòng tròn. Ngay lập tức, Giáo sư Altein dự định tiến hành so sánh gen lạ này với một số gen mẫu đang lưu trữ nhằm tìm hiểu xem mẫu gen này có gần gũi với loại gen mẫu nào đã được biết. Trong sinh học để đo độ khác biệt giữa hai mẫu gen người ta thường tính khoảng cách Hamming giữa chúng. Khoảng cách Hamming giữa hai gen cùng độ dài được định nghĩa là số lượng vị trí mà tại đó hai gen chứa các nuclêôtit khác nhau. Ví dụ, hai gen AGGTT và TGATT có khoảng cách Hamming bằng 2 do 2 nuclêôtit ở các vị trí 1 và 3 của chúng là khác nhau.

Do các gen mẫu được sử dụng đều có độ dài m (m≤n) và có cấu trúc thẳng, trong khi gen lạ lại có độ dài n và có cấu trúc vòng nên Giáo sư Altein đã định nghĩa khoảng cách Hamming giữa một gen mẫu và gen lạ là số nhỏ nhất trong số các khoảng cách Hamming giữa gen mẫu và những đoạn gen gồm m nuclêôtit liên tiếp theo chiều kim đồng hồ trong gen lạ.

Yêu cầu: Cho k gen mẫu, hãy xác định gen mẫu với khoảng cách Hamming đến gen lạ là nhỏ nhất và đưa ra khoảng cách tìm được.

Dữ liệu vào

  • Dòng thứ nhất chứa ba số nguyên dương n,m,k (m≤n≤1000; k≤100).
  • Dòng thứ hai chứa xâu độ dài n là dãy các nuclêôtit của gen lạ được liệt kê theo chiều kim đồng hồ bắt đầu từ một vị trí nào đó.
  • Dòng thứ i trong số k dòng tiếp theo chứa xâu độ dài m biểu diễn gen mẫu thứ i.

Các xâu chỉ gồm các chữ cái A, X, T, G.

Dữ liệu ra

In ra một số nguyên là khoảng cách Hamming nhỏ nhất tìm được.

Ràng buộc

  • 1≤m≤n≤1000.
  • 1≤k≤100.

Subtasks

  • Subtask 1 (50% số test): n≤100.
  • Subtask 2 (50% số test): 100<n≤1000.

Mỗi subtask gồm nhiều test, mỗi test được chấm điểm riêng.

Ví dụ

Input Output Giải thích
7 3 2
GTAAXXT
GAT
TTT
1 Các đoạn 3 nuclêôtit liên tiếp theo chiều kim đồng hồ là GTA, TAA, AAX, AXX, XXT, XTG, TGT. Gen mẫu GAT cách đoạn GTA đúng 1 (vị trí 2); gen mẫu TTT cách gần nhất là 2 (đoạn TGT).
5 3 2
AXTGA
GAA
TTT
0 Đoạn bắt đầu tại nuclêôtit thứ 4 đi vòng qua đầu xâu: G, A, A, trùng khớp hoàn toàn với gen mẫu GAA.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0