Square Matrix Multiplication (5kyu)
https://www.codewars.com/kata/5263a84ffcadb968b6000513/solutions/cpp
前回の答えは...
https://velog.io/@mir21c/Number-of-Proper-Fractions-with-Denominator-d-4kyu
休憩のためにおすすめの5 kyuを書きました
たいしたことはない.
マトリクスに実装を乗算するだけです.
追加:
フィールドでは、ライブラリを使用する場合が多いため、直接実装されませんが、マトリクスを処理する開発者が多い場合、行と列が混同されることが多いので、マトリクスを処理する際には、さらによく知っている方法を紹介します.
たとえば、2 Dマトリクスを定義する場合は、まず行(row)を定義し、次に下りを列(column)として定義することをお勧めします.下のようです.
親ベクトルは行(row)、サブベクトルは列(column)の順になります.
また、データアクセス中に、
行列式で行ったほうがいいです.x、y座標系で表示する場合は、y->xの順になります.NAMEもrowをr columnにcにして混同しないようにする
前回の答えは...
https://velog.io/@mir21c/Number-of-Proper-Fractions-with-Denominator-d-4kyu
休憩のためにおすすめの5 kyuを書きました
たいしたことはない.
マトリクスに実装を乗算するだけです.
std::vector<std::vector<int>> matrix_multiplication(std::vector<std::vector<int>> &a, std::vector<std::vector<int>> &b, size_t n)
{
std::vector<std::vector<int>> ret;
int n1 = a.size();
int m1 = a[0].size();
int n2 = b.size();
int m2 = b[0].size();
ret.resize(n1);
for (int r = 0; r < n1; ++r)
{
ret[r].resize(m2);
}
for (int r = 0; r < n1; ++r)
{
for (int c = 0; c < m2; ++c)
{
int sum = 0;
for(int m = 0; m< m1; ++m)
{
sum +=a[r][m] * b[m][c];
}
ret[r][c]=sum;
}
}
return ret;
}
何の説明もない.追加:
フィールドでは、ライブラリを使用する場合が多いため、直接実装されませんが、マトリクスを処理する開発者が多い場合、行と列が混同されることが多いので、マトリクスを処理する際には、さらによく知っている方法を紹介します.
たとえば、2 Dマトリクスを定義する場合は、まず行(row)を定義し、次に下りを列(column)として定義することをお勧めします.下のようです.
int rowNo = 4;
int colNo = 6;
int ** m = new int*[rowNo];
for(int r = 0; r< rowNo;++r)
{
m[r] = new int[colNo];
}
上記の問題では2つのベクトルを使用しています.親ベクトルは行(row)、サブベクトルは列(column)の順になります.
また、データアクセス中に、
行列式で行ったほうがいいです.x、y座標系で表示する場合は、y->xの順になります.NAMEもrowをr columnにcにして混同しないようにする
for(int r = 0; r< rowNo ; ++r)
for(int c = 0; c< colNo ; ++c)
int a = m[r][c];
逆も同様ですが、メモリの観点から見ると、上記の操作は少し速いです.また、様々なマトリクスや画像を処理する際に、これらの順序を守ることが容易になります.Reference
この問題について(Square Matrix Multiplication (5kyu)), 我々は、より多くの情報をここで見つけました https://velog.io/@mir21c/Square-Matrix-Multiplication-5kyuテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol