0からN-1までの整数を含み、C++では主対角線に0のみが含まれる必要がある次数Nの対称行列を見つけます。
ここでは、次数Nの対称行列を1つ生成する方法を説明します。各行の要素には、0からN –1までの数値が含まれます。対角要素は常に0になります。
このタスクは簡単です。NxNの行列を作成し、各行iと各列jについて、iとjが同じ場合は、0としてマークします。それ以外の場合は、1つのカウンターを1からN –1に増やします。個々の行の値を配置します。
例
#include <iostream>
using namespace std;
void makeSymmetricMatrix(int n) {
int matrix[n][n];
for(int i = 0; i<n; i++){
int count = 1;
for(int j = 0; j <n; j++){
if(i == j){
matrix[i][j] = 0;
}else{
matrix[i][j] = count++;
}
}
}
for(int i = 0; i<n; i++){
for(int j = 0; j <n; j++){
cout << matrix[i][j] << " ";
}
cout << endl;
}
}
int main() {
int n = 5;
makeSymmetricMatrix(n);
} 出力
0 1 2 3 4 1 0 2 3 4 1 2 0 3 4 1 2 3 0 4 1 2 3 4 0
-
C ++でのMatrixのジグザグ(または対角)トラバーサル
この問題では、2D行列が与えられます。私たちの仕事は、マトリックのすべての要素を対角線の順序で印刷することです。 問題を理解するために例を見てみましょう 1 2 3 4 5 6 7 8 9 出力- 1 4 2 7 5 3 8 6 9 マトリックスをジグザグ形式または対角形式で印刷するときに従うパターンを見てみましょう。 こ
-
行列がC++で対称であるかどうかをチェックするプログラム
線形代数では、行列M [] []は、行列の転置が行列自体と等しい場合にのみ、対称行列であると言われます。行列の転置とは、行列を対角線上で反転させることです。これにより、行列の行と列のインデックスが切り替わります。 対称行列の例の下- $$ \ begin {bmatrix} 1&4&7 \\ 4&5&6 \\ 7&6&9 \\ \ end {bmatrix} \ Rightarrow \ begin {bmatrix} 1&4&7 \\ 4&5 &6 \\ 7&6&9 \\ \ end {bmatrix} $$ 上記の行列は、左側の行列を転置した対称行列であり、結果は行列自体と同じです