Đưa ra một vị trí với một hàng rooks và / hoặc khoảng trống, xuất ra bao nhiêu bước di chuyển khác nhau có thể. Một tân binh có thể di chuyển sang trái hoặc phải đến một khoảng trống, nhưng không phải là một yêu cầu vượt qua một tân binh khác. Khi một tân binh di chuyển, các tân binh khác vẫn giữ nguyên vị trí.
Ví dụ: từ vị trí này, có thể di chuyển 6 bước :
.R..RRR.
- Rook đầu tiên (ngoài cùng bên trái) có thể di chuyển 1 khoảng trắng bên trái hoặc 1 hoặc 2 khoảng trắng bên phải (3 di chuyển)
- Rook tiếp theo chỉ có thể di chuyển 1 hoặc 2 khoảng trống còn lại (2 di chuyển)
- Rook thứ ba hoàn toàn không thể di chuyển bởi vì nó bị ép giữa hai rook khác (0 di chuyển)
- Rook cuối cùng chỉ có thể di chuyển 1 khoảng trắng bên phải (1 di chuyển)
Lưu ý rằng một vị trí có thể không có tân binh nào cả, hoặc không có khoảng trống nào cả.
Dữ liệu vào: Một danh sách không trống (chuỗi, mảng, v.v.) của rooks và khoảng trống. Bạn có thể biểu thị chúng dưới dạng True
/ False
, 1
/ 0
, 'R'
/ '.'
hoặc bất kỳ hai ký tự byte đơn riêng biệt nhất quán hoặc số có một chữ số nào bạn chọn. Tùy thuộc vào bạn, cái nào có nghĩa là tân binh và có nghĩa là không gian trống.
Đầu ra: Một số nguyên không âm. Phao số nguyên cũng ổn.
Các trường hợp thử nghiệm
Đầu ra là số bên trái.
6 .R..RRR.
0 .
0 R
4 R..RR
3 ...R
8 ..R..R..
0 ......
Đối với nhiều trường hợp thử nghiệm, đây là tất cả các đầu vào lên đến chiều dài 5.
0 .
0 R
0 ..
1 .R
1 R.
0 RR
0 ...
2 ..R
2 .R.
1 .RR
2 R..
2 R.R
1 RR.
0 RRR
0 ....
3 ...R
3 ..R.
2 ..RR
3 .R..
3 .R.R
2 .RR.
1 .RRR
3 R...
4 R..R
3 R.R.
2 R.RR
2 RR..
2 RR.R
1 RRR.
0 RRRR
0 .....
4 ....R
4 ...R.
3 ...RR
4 ..R..
4 ..R.R
3 ..RR.
2 ..RRR
4 .R...
5 .R..R
4 .R.R.
3 .R.RR
3 .RR..
3 .RR.R
2 .RRR.
1 .RRRR
4 R....
6 R...R
5 R..R.
4 R..RR
4 R.R..
4 R.R.R
3 R.RR.
2 R.RRR
3 RR...
4 RR..R
3 RR.R.
2 RR.RR
2 RRR..
2 RRR.R
1 RRRR.
0 RRRRR