行列の乗算
- [問題]行列 A ( n 行 m 列)と B ( m 行 l 列)のかけ算を行うプログラムを書け.n,m,および,l の値は入力データとして与えるものとし,任意の n,m,l に対応できるように書くこと.なお,行列のかけ算の定義は以下の通りとする.ただし,cij 等は,行列 C 等の i 行 j 列要素とする.
- C = AB, cij = Σkaikbkj k = 1, ・・・, m
- 問題を解くにあたり,行列とは double 型の 2 次元配列と考えてよい.たとえば,2 行 3 列の行列 A は,
- double A[2][3]
- のような配列であるとみなしてよい.ただし,この問題においては,任意の n,m,l に対応するため,new 演算子等を利用する必要がある.
- (入力例) コメントの部分は除く
- 2 3 3 // n,m,l の値
- 1 2 3 // 行列 A の 1 行目
- 4 5 6 // 行列 A の 2 行目
- 1 0 0 // 行列 B の 1 行目
- 0 1 0 // 行列 B の 2 行目
- 0 0 1 // 行列 B の 3 行目
- (出力例) コメントの部分は除く
- 1 2 3 // 行列 C の 1 行目
- 4 5 6 // 行列 C の 2 行目
プログラムを書く際の注意事項
「C/C++とJava」の参考箇所(多次元配列)
「C/C++とJava」の参考箇所(メモリの動的確保)