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

C++で1回の移動でビショップがアクセスできる正方形の総数を数えます


8 X 8グリッドで表されるチェス盤では、行と列の位置の形式でビショップの位置が与えられます。目標は、ビショップが1回の移動で訪問できる正方形の総数を見つけることです。ビショップはすべての方向に移動できることがわかっています(対角線上で左上/下および右上/下)。

C++で1回の移動でビショップがアクセスできる正方形の総数を数えます

入力

row = 5, column = 4

出力

Count of total number of squares that can be visited by Bishop in one move
are: 13

説明

As shown in above figure the squares that Bishop can cover are 9.

入力

row = 1, column = 1

出力

Count of total number of squares that can be visited by Bishop in one move
are: 7

説明

As this is the corner most position, then Bishop can only cover one
diagonal which can have a maximum of 7 squares.

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

このアプローチでは、水平および垂直の最大および最小の正方形の位置を使用して対角線の正方形を計算します。

  • ビショップの位置に整数の行と列を取ります。

  • 関数squares_visited(int first、int second)は、Bishopの位置を取り、1回の移動でアクセスできる正方形の数を返します。

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

  • 左の位置の最小値は、行または列の位置の最小値-1です。

  • 左の位置の最大値は8-行または9列の位置の最大値です。

  • 正しい位置の最小値は、行または9列の位置の最小値-1です。

  • 正しい位置の最大値は8-行または列の位置の最大値です。

  • 合計の二乗は、上記で計算された位置の合計になります。

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

#include <bits/stdc++.h>
using namespace std;
int squares_visited(int first, int second){
   int count = 0;
   int min_left = min(first, second) − 1;
   int max_left = 8 − max(first, 9 − second);
   int max_right = 8 − max(first, second);
   int min_right = min(first, 9 − second) − 1;
   count = min_left + min_right + max_right + max_left;
   return count;
}
int main(){
   int row = 3, column = 3;
   cout<<"Count of total number of squares that can be visited by Bishop in one move are: "<<squares_visited(row, column);
   return 0;
}

出力

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

Count of total number of squares that can be visited by Bishop in one move are: 11

  1. 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

  2. C++で直角二等辺三角形に収まる正方形の最大数

    与えられたタスクは、底辺が「s」の二等辺三角形の中に収まる、辺が「a」の正方形の最大数を見つけることです(二等辺三角形には少なくとも2つの等しい辺があります)。 例を使用して、私たちがしなければならないことを理解しましょう: 入力 s=5, a=1 出力 10 説明 −基数の平方数は、sをaで割り、1を引くことで計算できます。したがって、基数の平方数=5/1 – 1 =4 同様に、下の4つの正方形を配置すると、base(s-a)の新しい二等辺三角形が得られます。次に同じ手順を繰り返して3つの正方形を取得し、1つの正方形が上に配置されるまで続けます。 入力 s=7, a=2 出力