C++ code to find the number of scans needed to find an object


Suppose, we are given a grid of dimensions m x n. An object is placed at cell (ix, iy) and we have to find the object scanning from a starting position (sx, sy). The scanning algorithm scans the ith row and the j-th column of the grid if it is located at cell (i, j) of the grid. If it has found the object, the scanning stops; if not, the scanning pointer moves to cell in position (i + 1, j + 1) and then scans in the same way. This continues until the item is found. Given the positions, we have to find out how many scans the algorithm has to perform to find the object.

So, if the input is like n = 20, m = 20, sx = 3, sy = 2 , ix = 12, iy = 4, then the output will be 2.

Steps

To solve this, we will follow these steps −

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))

Example

Let us see the following implementation to get better understanding −

#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;
}

Input

20, 20, 3, 2 , 12, 4

Output

2

Updated on: 29-Mar-2022

108 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements