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

C++で指定されたサイズの長方形内で可能な菱形の数を数えます


高さX幅の寸法の長方形が与えられます。長方形は、点(0,0)を左下隅に持つ2D座標系で表されます。したがって、目標は、これらすべての条件が満たされるように、この長方形内で可能な菱形の数を数えることです-

  • ひし形の面積は0を超えています。

  • ひし形の対角線はx軸とy軸に平行です。

  • ひし形には、すべてのコーナーの整数座標があります。

例を挙げて理解しましょう

入力 −長さ=3幅=3

出力 −指定されたサイズの長方形内で可能な菱形の数は次のとおりです。4

説明 −下の図には、height =width=3の長方形があります。また、面積が0を超え、対角線が両方の軸に平行(整数座標)の4つの菱形を見ることができます-

First [ (1,0), (2,1), (1,2), (0,1) ]
Second [ (2,0), (3,1), (2,2), (1,1) ]
Third [ (2,1), (3,2), (2,3), (1,2) ]
Fourth [ (1,1), (2,1), (1,2), (0,1) ]

C++で指定されたサイズの長方形内で可能な菱形の数を数えます

入力 −長さ=2幅=3

出力 −指定されたサイズの長方形内で可能な菱形の数は次のとおりです。2

説明 −下の図には、height =2 width=3の長方形があります。また、中に2つのひし形が見えます

C++で指定されたサイズの長方形内で可能な菱形の数を数えます

以下のプログラムで使用されているアプローチは次のとおりです

非ゼロの領域と整数の座標を持つ最初のひし形は、右上隅の(2,2)から始まります。インデックスi=j=2からi<=lengthおよびj<=lengthへのトラバースを開始します。 iとjを2インクリメントして、偶数の長さを固定します(整数座標の場合)。これらの対角線を持つ菱形の数は、(height-i + 1)X(width-j + 1)になります。

  • 長さと幅を整数とします。

  • 関数possible_rhombus(int length、int width)は長方形の寸法を取り、上記のすべての条件に従う長方形内で可能な菱形の数を返します。

  • 初期カウントを0とします。

  • i=2からi<=lengthおよびj=2からj<=widthまでトラバースします。

  • i、jごとに、temp_1 =length-i+1およびtemp_2=width-j+1を取得します

  • カウントするtemp_1*temp_2を追加します。

  • iとjを2ずつインクリメントします(整数座標の場合)。

  • 結果として最後にカウントを返します。

#include <bits/stdc++.h>
using namespace std;
long long possible_rhombus(int height, int width){
   long long count = 0;
   for (int i = 2; i <= height; i += 2){
      for (int j = 2; j <= width; j += 2){
         int temp_1 = height - i + 1;
         int temp_2 = width - j + 1;
         count += temp_1 * temp_2;
      }
   }
   return count;
}
int main(){
   int height = 4, width = 4;
   cout<<"Count of number of rhombi possible inside a rectangle of given size are: "<<possible_rhombus(height, width);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Count of number of rhombi possible inside a rectangle of given size are: 16

  1. C++のグリッドで指定された方向に可能な移動をカウントします

    サイズnxmのグリッドと開始点x、yを表す2つの変数nとmです。 また、移動((1,1)、(2,2))などとしてグリッド内を移動するために実行できるステップ/移動のペアも指定されます。移動の各ペアは、x、y軸で実行されるステップの単位を表します。目標は、境界[1、n] X [1、m]内のグリッド内をトラバースするために実行できる合計ステップを見つけることです。nが5、mが4、現在の位置が2、2で、選択されたステップが( 1、-1)次に、このステップを1回実行すると、(3,1)になります。このステップを再度実行すると、(4、-1)になります。これは、-1が範囲外であるため無効です。 例

  2. C++で長方形の正方形の数を数える

    =Bとなるように、長さL、幅Bの長方形が与えられます。目標は、サイズLXBの長方形が収容できる正方形の数を見つけることです。 上の図は、サイズ3 X 2の長方形を示しています。2、2X2の正方形、6,1X1の正方形があります。 総正方形=6+ 2=8。 サイズLXBのすべての長方形には、1X1の正方形のL*B数があります。 最大の正方形のサイズはBXBです。 L =B =1の場合、正方形=1。 L =B =2の場合、正方形=1 + 4 =5(2X2の1、1X1の4) L =B =3の場合、正方形=1 + 4 + 9 =14(3X3の​​1、2X2の4、1