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

C++で2つの対角線の合計の差を見つけます。


ここでは、特定の行列の2つの対角線の合計の差を取得する方法を説明します。次数NxNの行列があるとすると、一次対角線と二次対角線の合計を取得してから、それらの差を取得する必要があります。主対角線を取得するために、行インデックスと列インデックスが同時に増加することがわかります。 2番目の対角線の場合、行インデックスと列インデックスの値は、この式row_index =n – 1 –col_indexによって増加します。合計を取得したら、差を取り、結果を返します。

#include<iostream>
#include<cmath>
#define MAX 100
using namespace std;
int diagonalSumDifference(int matrix[][MAX], int n) {
   int sum1 = 0, sum2 = 0;
   for (int i = 0; i < n; i++) {
      sum1 += matrix[i][i];
      sum2 += matrix[i][n-i-1];
   }
   return abs(sum1 - sum2);
}
// Driven Program
int main() {
   int n = 3;
   int matrix[][MAX] = {
      {11, 2, 4},
      {4 , 5, 6},
      {10, 8, -12}
   };
   cout << "Difference of the sum of two diagonals: " << diagonalSumDifference(matrix, n);
}

出力

Difference of the sum of two diagonals: 15

  1. 二分木の2つのノード間の距離を見つけるためのクエリ– C ++のO(logn)メソッド

    この問題では、二分木が与えられ、Qクエリが与えられます。私たちのタスクは、クエリを解決してバイナリツリーの2つのノード間の距離を見つけるプログラムを作成することです– C ++のO(logn)メソッド。 問題の説明 各クエリでは、バイナリツリーの2つのノードが与えられ、2つのノード間の距離、つまり、別のノードから1つのノードに到達するために通過するエッジの数を見つける必要があります。 問題を理解するために例を見てみましょう 入力 :二分木 クエリ=3 [2、6] [4、1] [5、3] 出力: 3、2、3 ソリューションアプローチ この問題を解決するために、最

  2. グラフ内の2つのノード間のパスを見つけるC++プログラム

    このプログラムでは、特定のグラフでDFSを使用して、2つのノード間にパスが存在するかどうかを確認できます。 アルゴリズム Begin    function isReach() is a recursive function to check whether d is reachable to s :    A) Mark all the vertices as unvisited.    B) Mark the current node as visited and enqueue it and it will be used to