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

Đếm số lần quét để tìm đối tượng trên lưới bằng C++

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