Thử thách
Đưa ra một ma trận nhị phân và một chuỗi nhị phân, xác định xem chuỗi nhị phân đó có thể được tìm thấy bắt đầu từ bất kỳ điểm nào trong ma trận hay không và di chuyển theo bất kỳ hướng nào tại bất kỳ điểm tiếp theo nào để tạo thành chuỗi nhị phân. Đó là, chuỗi có thể được tìm thấy gấp lại tuy nhiên bên trong ma trận?
Chuỗi chỉ có thể được gấp lại ở 90 độ hoặc 180 độ (kết nối cạnh; Manhattan Khoảng cách 1) và không thể tự chồng lên nhau tại bất kỳ điểm nào.
Thí dụ
Hãy lấy ví dụ sau:
Matrix:
010101
111011
011010
011011
Snake: 0111111100101
Đây là một trường hợp thử nghiệm trung thực. Chúng ta có thể thấy con rắn gấp lại ở vị trí sau:
0-1 0 1 0 1
|
1 1 1-0 1 1
| | | |
0 1 1 0-1-0
| |
0 1-1 0 1 1
Quy tắc
- Áp dụng sơ hở tiêu chuẩn
- Bạn có thể lấy độ dài của chuỗi và chiều rộng và chiều cao của ma trận làm đầu vào nếu bạn muốn
- Bạn có thể lấy ma trận nhị phân và chuỗi nhị phân làm chuỗi đa chuỗi / mảng chuỗi / chuỗi tham gia newline / bất kỳ chuỗi nào khác đã tham gia và chuỗi
- Bạn có thể lấy kích thước dưới dạng một mảng phẳng thay vì một vài đối số
- Chương trình của bạn phải hoàn thành cho bất kỳ ma trận 5 x 5 nào với bất kỳ chuỗi nào có độ dài tối đa 10 trong một phút
Hạn chế
- Ma trận không nhất thiết phải là hình vuông
- Chuỗi sẽ không trống
- Chuỗi có thể dài 1
- Chuỗi sẽ không chứa nhiều ô vuông hơn mức có sẵn (nghĩa là
len(string) <= width(matrix) * height(matrix)
Các trường hợp thử nghiệm
Sự thật
01010
10101
01010
10101
01010
0101010101010101010101010
01110
01100
10010
10110
01101
011111000110100
0
0
10
01
1010
100
010
001
100010001
Giả
00000
00000
00000
00000
00000
1
10101
01010
10101
01010
10101
11
100
010
001
111
10001
01010
00100
01010
10001
1000100010001000101010100