' P '

whatever I will forget

行列の積

復習してたら頭がこんがらがってしょうがなかった...
まあこれもアルゴリズムというよりは数学です

なんとかゴリゴリforぶん回してACでした。

onlinejudge.u-aizu.ac.jp

計算方法

f:id:mankozooyork:20200609024359p:plain
上記のような3*3になっていないような行列の計算も、基本のものと同じ。
ただ解が長い方の行列の長さに合わさる?はず。

detail.chiebukuro.yahoo.co.jp

混乱したところ

1つ目の行列はn行、m列
2つ目の行列はm行、l列
1つ目の行列と2つめの行列がmを共有しているところが厄介だった

1つめの行列と2つめの行列を掛け合わせるところでは、 [n][m]*[m][l]としておけばよいのだが、単純に入力値を順番に三重ループしちゃうと混乱してしまうってわけです。
図をみる限り、最もテキパキ値が変わる部分はmなので、そこを最深部分にもってこようね、ってだけです

for(int i; i<n; i++) {
  for(int j; j<l; j++) {
    for(int k; k<m; k++) {
      ans[i][k] += m1[i][j]*m2[j][k];
    }
  }
}

参考

qiita.com