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

C++のマトリックスで単一の動きを見つける


この問題では、2つのポイント(x1、y1)と(x2、y2)を表す4つの値x1、y1、x2、y2が与えられます。私たちの仕事は、マトリックス内の単一の動きを見つけることです。 1つのポイント(x1、y1)から(x2、y2)に移動できる方向を見つける必要があります。単一である必要がある方向によっていくつでも移動することができ、「左」、「右」、「上」、「下」の形式で方向を返す必要があります。それ以外の場合は、「不可能」を示す-1を返します。

問題を理解するために例を見てみましょう

入力

x1 = 2, y1 = 1, x2 = 5, y1 = 1

出力

Right

ソリューションアプローチ

この問題の簡単な解決策は、ソースから宛先に到達するために、2つの座標x1:x2またはy1:y2のいずれかが同じである必要があるという事実を使用することです。値については、ここにケースがあります-

Case 1: x1 = x2 & y1 > y2 -> Direction : Left
Case 1: x1 = x2 & y2 > y1 -> Direction : Right
Case 1: y1 = y2 & x1 > x2 -> Direction : Up
Case 1: y1 = y2 & x2 > x1 -> Direction : Down

ソリューションの動作を説明するプログラム

#include <iostream>
using namespace std;
void findSingleMovement(int x1, int y1, int x2, int y2) {
   if (x1 == x2 && y1 < y2)
      cout<<"Right";
   else if (x1 == x2 && y1 > y2)
      cout<<"Left";
   else if (y1 == y2 && x1 < x2)
      cout<<"Down";
   else if (y1 == y2 && x1 > x2)
      cout<<"Up";
   else
      cout<<"Not Possible";
}
int main() {
   int x1, x2, y1, y2;
   x1 = 2; y1 = 1;
   x2 = 5; y2 = 1;
   cout<<"The direction of movement is ";
   findSingleMovement(x1, y1, x2, y2);
   return 0;
}

出力

The direction of movement is Down

  1. C++で単一値のサブツリーの数を検索する

    二分木があるとします。私たちのタスクは、指定されたツリー内の単一値のサブツリーをカウントすることです。単一値のサブツリーはサブツリーであり、そのツリーのすべてのノードに同じ値が含まれています。木が以下のようなものだとしましょう- 4つの単一値サブツリーがあります。これらは以下のようなものです- これはボトムアップ方式で解決できます。訪問したすべてのサブツリーについて、その下にルートされたサブツリーが単一値の場合はtrueを返し、カウンターを1増やします。ここで、countは再帰呼び出しの参照パラメーターです。そして、戻り値を使用して、左右のサブツリーが単一値であるかどうかを確認

  2. 行列の転置を見つけるためのC++プログラム

    行列は、行と列の形式で配置された数値の長方形の配列です。行列の転置は、元の行が現在の列である新しい行列であり、その逆も同様です。たとえば。 マトリックスは以下のとおりです- 1 2 3 4 5 6 7 8 9 上記の行列の転置は次のとおりです。 1 4 7 2 5 8 3 6 9 行列の転置を見つけるプログラムは次のとおりです- 例 #include<iostream< using namespace std; int main() {    int transpose[10][10], r=3, c=2, i, j;    int a