問題14

次のプログラムの中の  a    c  に入れる正しい答えを、解答群の中から選べ。ここで、配列の要素番号は1から始まるものとする。

要素の多くが0の行列を疎行列という。次のプログラムは、二次元配列に格納された行列のデータ量を削減するために、疎行列の格納に適したデータ構造に変換する。

関数transformSparseMatrixは、引数matrixで二次元配列として与えられた行列を整数型配列の配列に変換して返す。関数transformSparseMatrixをtransformSparseMatrix({{3,0,0,0,0},{0,2,2,0,0},{0,0,0,1,3},{0,0,0,2,0},{0,0,0,0,1}})として呼び出したときの戻り値は、{{  a  },{  b  },{  c  }}である。

[プログラム]

◯整数型配列の配列: transformSparseMatrix(整数型の二次元配列: matrix)
整数型: i, j
整数型配列の配列: sparseMatrix
sparseMatrix ← {{}, {}, {}} /* 要素数0の配列を三つ要素にもつ配列 */
for(iを1からmatrixの行数まで1ずつ増やす)
  for(jを1からmatrixの列数まで1ずつ増やす)
    if(matrix[i, j]が0でない)
      sparseMatrix[1]の末尾にiの値を追加する
      sparseMatrix[2]の末尾にjの値を追加する
      sparseMatrix[3]の末尾にmatrix[i,j]の値を追加する
    endif
  endfor
endfor
return sparseMatrix

[解答群]
a b c
1,2,2,3,3,4,5 1,2,3,4,5,4,5 3,2,2,1,2,3,1
1,2,2,3,3,4,5 1,2,3,4,5,4,5 3,2,2,1,3,2,1
1,2,3,4,5,4,5 1,2,2,3,3,4,5 3,2,2,1,2,3,1
1,2,3,4,5,4,5 1,2,2,3,3,4,5 3,2,2,1,3,2,1