すべての行の合計がC++で等しくなるように、N^2の数値を行列に配置します
この問題では、整数値Nが与えられます。私たちのタスクは、範囲(1、N 2 )内の数値を出力することです。 )各行の合計要素が等しくなるようにサイズNxNの2D行列で。
問題を理解するために例を見てみましょう
入力 − n =4
出力 −
1 6 11 16 2 7 12 13 3 8 9 14 4 5 10 15
各行の要素の合計は34です
この方法を解決するには、各行の合計が等しくなるように、各要素を行列に配置する必要があります。このために、貪欲なアプローチを使用し、行ごとに正しい要素を配置して、合計を等しくします。
このために、最初にマトリックス内のすべての要素をフィードし、次にこの式を使用して前のマトリックスの要素を持つ新しいマトリックスを作成します。
resultMat[i][j] = prevMat[j][(i+j)%n]
例
以下のコードは、ソリューションの実装を示しています
#include<iostream> using namespace std; int main(){ int n = 4,i,j; cout<<"Matrix of size : "<<n<<" in which sum of elements of all rows is equal is :\n"; int prevMat[n][n], resultMat[n][n] ; int c = 1; for (i = 0; i < n; i++) { for (j = 0; j < n; j++) prevMat[i][j] = c++; } for (i = 0; i < n; i++) { for (<) { resultMat[i][j] = prevMat[j][((i+j)%n)]; } } for (i = 0;i<n;i++) { for (j=0; j<n; j++) { cout<<resultMat[i][j]<<"\t"; } cout<<endl; } }
出力
Matrix of size : 4 in which sum of elements of all rows is equal is : 1 6 11 16 2 7 12 13 3 8 9 14 4 5 10 15
-
C++で最小の合計を持つツリーレベルを見つけるプログラム
二分木があり、そのルートのレベルが1、子のレベルが2などであると仮定します。レベルXのノードのすべての値の合計が最小になるように、最小のレベルXを見つける必要があります。したがって、ツリーが次のような場合- 合計が4– 10 =-6であるため、出力は2になります。これは最小です。 これを解決するには、次の手順に従います- level:=1、sum:=rの値、ansLevel:=level、ansSum:=sum キューqを定義し、指定されたノードrをqに挿入します qが空ではない間 容量:=qのサイズ レベルを1増やし、合計:=0 容量が0では
-
C++で行/列に複数のアイテムが含まれないようにアイテムをn^2の位置に配置する方法
この問題では、これらの線の間にn2の交点があるように配置された、垂直方向と水平方向にn本の線があるような整数nが与えられます。私たちの仕事は、4つのアイテムをこれらの交差点に配置できる方法の総数を見つけることです 行と列に複数のアイテムが含まれないようにします。 問題を理解するために例を見てみましょう 入力 n=4 出力 24 説明 この問題を解決するには、nC4になるアイテムを持つn本の線から4本の水平線を選択する必要があります。これで、すべての水平線にn本の垂直線があるため、最初に選択した水平線にアイテムを配置する方法はn個あります。次に、n-1個の可能な配置がある次の選択され