Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Kiểm tra ô có thể truy cập nhiều lần trong chuỗi C++

Cho chuỗi chứa '.' (ô trống) và số x (có thể di chuyển x bước trái/phải). Kiểm tra có ô nào bị truy cập >1 lần không.

Ví dụ: ".2...2.." → ô thứ 4 truy cập được từ vị trí 2 (đi phải 2) và vị trí 6 (đi trái 2).

Giải thuật

  1. Mảng visited[n] đếm số lần truy cập mỗi ô
  2. Duyệt chuỗi: nếu là số x, tăng visited[j] cho j trong [i-x, i+x] (trong phạm vi)
  3. Kiểm tra visited có giá trị > 1 không

Lưu ý

Code ví dụ trong bài gốc có vẻ bị trộn với bài toán kiểm tra BST level-wise sorted. Giải thuật đúng như mô tả ở trên.