Mô tả bài toán
Lưới m x n. Đối tượng tại (ix,iy). Quét từ (sx,sy). Tại ô (i,j) quét hàng i và cột j. Nếu không thấy, di chuyển đến (i+1,j+1) (có vòng). Tìm số lần quét tối thiểu.
Ví dụ
n=20,m=20,sx=3,sy=2,ix=12,iy=4 → Output: 2.
Thuật toán
Tính khoảng cách theo hàng và cột với vòng: t1 = (sx<=ix? ix-sx : 2*n-ix-sx), t2 = (sy<=iy? iy-sy : 2*m-iy-sy). Kết quả = min(t1,t2).
Code C++
#include <bits/stdc++.h>
using namespace std;
void solve(int n, int m, int sx, int sy, int ix, int iy) {
int t1 = (sx <= ix) ? ix - sx : 2*n - ix - sx;
int t2 = (sy <= iy) ? iy - sy : 2*m - iy - sy;
cout << min(t1, t2);
}
int main() {
int n=20,m=20,sx=3,sy=2,ix=12,iy=4;
solve(n,m,sx,sy,ix,iy);
return 0;
}
Đầu vào / Đầu ra
Input: 20,20,3,2,12,4
Output: 2