Computer >> Máy Tính >  >> Lập trình >> C ++

Mã C ++ để tìm số lần quét cần thiết để tìm một đối tượng

Giả sử, chúng ta được cung cấp một lưới có kích thước m x ​​n. Một đối tượng được đặt tại ô (ix, iy) và chúng ta phải tìm đối tượng đang quét từ vị trí bắt đầu (sx, sy). Thuật toán quét sẽ quét hàng thứ i và cột thứ j của lưới nếu nó nằm ở ô (i, j) của lưới. Nếu nó đã tìm thấy đối tượng, quá trình quét sẽ dừng lại; nếu không, con trỏ quét sẽ di chuyển đến ô ở vị trí (i + 1, j + 1) và sau đó quét theo cách tương tự. Điều này tiếp tục cho đến khi vật phẩm được tìm thấy. Với các vị trí, chúng ta phải tìm xem thuật toán phải thực hiện bao nhiêu lần quét để tìm đối tượng.

Vì vậy, nếu đầu vào là n =20, m =20, sx =3, sy =2, ix =12, iy =4, thì đầu ra sẽ là 2.

Các bước

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

t1 := (if sx <= ix, then ix - sx, otherwise 2 * n - ix - sx)
t2 := (if sy <= iy, then iy - sy, otherwise 2 * m - iy - sy)
print(minimum of (t1, t2))

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#include <bits/stdc++.h>
using namespace std;
#define N 100
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

20, 20, 3, 2 , 12, 4

Đầu ra

2