C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

オブジェクトを見つけるために必要なスキャンの数を見つけるためのC++コード


次元mxnのグリッドが与えられていると仮定します。オブジェクトはセル(ix、iy)に配置され、開始位置(sx、sy)からスキャンしているオブジェクトを見つける必要があります。スキャンアルゴリズムは、グリッドのセル(i、j)にある場合、グリッドのi番目の行とj番目の列をスキャンします。オブジェクトが見つかった場合、スキャンは停止します。そうでない場合、スキャンポインタは位置(i + 1、j + 1)のセルに移動し、同じ方法でスキャンします。これは、アイテムが見つかるまで続きます。位置を指定して、オブジェクトを見つけるためにアルゴリズムが実行する必要のあるスキャンの数を確認する必要があります。

したがって、入力がn =20、m =20、sx =3、sy =2、ix =12、iy =4の場合、出力は2になります。

ステップ

これを解決するには、次の手順に従います-

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

理解を深めるために、次の実装を見てみましょう-

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

入力

20, 20, 3, 2 , 12, 4

出力

2

  1. C++を使用して文字列の部分文字列の数を見つける

    この記事では、特定の文字列に形成できるサブ文字列(空ではない)の数を見つけるためのアプローチについて学習します。 Input : string = “moon” Output : 10 Explanation: Substrings are ‘m’, ‘o’, ‘o’, ‘n’, ‘mo’, ‘oo’, ‘on’, ‘moo’, ‘oon’ and &

  2. C++を使用して停止ステーションの数を見つける

    ポイントXとYの間にn個の中間駅があります。2つの駅が隣接しないように、s駅に停車するように列車を配置できるさまざまな方法の数を数えます。そのため、この記事では、停車駅の数を見つけるためのあらゆる可能なアプローチについて説明します。問題を見ると、sの駅数で列車を止めることができる組み合わせを見つける必要があることがわかります。 問題を解決するためのアプローチ 中間駅が8つあり、3つの中間駅で電車を止める方法を見つける必要がある例を見てみましょう。 n = 8, s = 3 (n-s)、つまり電車が止まらない駅が5つ残っています 電車が止まらないA、B、C、D、Eの5つの駅があります