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

ウサギが箱を引っ張る合計時間を見つけるためのC++コード


2つの座標(x1、y1)と(x2、y2)があるとします。ウサギがフードボックスを引っ張っています。ユニットサイズのロープが1本しかないロープが付いています。うさぎは箱を立っているところまで引っ張ってから、同じ方向に1単位移動します。うさぎは箱を引っ張らずに1ユニットを右、左、上、下に動かすことができます。この場合、箱から1単位離れている必要はありません。彼が再び箱を引っ張りたいのなら、それは箱の隣の地点に行かなければなりません。うさぎはいつでも始めることができます。任意の方向に1ユニット移動するのに1秒かかります。ボックスを開始位置から終了位置に移動するのに必要な最小時間を見つける必要があります。

したがって、入力がx1=1のような場合。 y1 =1; x2 =2; y2 =2の場合、Rabbitはポイント(2,1)から開始できるため、出力は4になります。 (3,1)にある間、ボックスを(2,1)に引っ張ります。次に、ボックスを引っ張らずに(3,2)に移動し、次に(2,2)に移動します。次に、(2,3)に移動しながら、ボックスを(2,2)に引きます。 4秒かかります。

ステップ

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

s := 0
if x1 is not equal to x2 and y1 is not equal to y2, then:
   s := |x2 - x1| + |y2 - y1|
Otherwise
   s := |x2 - x1| + |y2 - y1|
return s

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

#include <bits/stdc++.h>
using namespace std;
int solve(int x1, int y1, int x2, int y2){
   int s = 0;
   if (x1 != x2 && y1 != y2)
      s = abs(x2 - x1) + abs(y2 - y1) + 2;
   else
      s = abs(x2 - x1) + abs(y2 - y1);
   return s;
}
int main(){
   int x1 = 1;
   int y1 = 1;
   int x2 = 2;
   int y2 = 2;
   cout << solve(x1, y1, x2, y2) << endl;
}

入力

1, 1, 2, 2

出力

4

  1. C++で最短のスーパーストリングを見つける

    文字列の配列Aがあるとすると、Aの各文字列をサブ文字列として含む最小の文字列を見つける必要があります。また、Aの文字列がAの別の文字列のサブ文字列ではないと想定することもできます。 したがって、入力が[dbsh、 dsbbhs、 hdsb、 ssdb、 bshdbsd]の場合、出力は hdsbbhssdbshdbsdになります。 これを解決するには、次の手順に従います- 関数calc()を定義します。これには、a、b、が必要です。 初期化i:=0の場合、i

  2. C++で最も近い回文を見つける

    数nがあるとすると、回文である最も近い数を取得する必要があります。したがって、回文は、絶対差が小さい数よりも少ないか、多い可能性があります。したがって、数値が145のような場合、結果は141になります。 これを解決するには、次の手順に従います- sn:=nのサイズ snが1と同じ場合、- n [0]を1減らし、サイズn[0]の1の文字列を返します half_sn:=(sn + 1)/ 2 half_val:=stol(インデックス0からhalf_snまでのnの部分文字列 配列候補を定義する={10^(sn)– 1、10 ^(sn-1)-1、10 ^(sn-1)+ 1、10