#include <stdio.h>
#include <stdlib.h> // 動的メモリ確保 (malloc/free) に必要
int main(void) {
int i, j;
// 変数a, bは行数、列数
int a, b;
// int **mat は int* の配列 (行のポインタ) を指すポインタ
int **mat;
// a(行数)とb(列数)を読み込む
// //ここで2次元配列の動的確保をする
// 1. a個の行ポインタ (int*) を格納する配列を確保
mat
= (int**)malloc(a
* sizeof(int*));
// 2. 各行についてb個のint要素を格納する配列を確保
for (i = 0; i < a; i++) {
mat
[i
] = (int*)malloc(b
* sizeof(int)); }
// //ここで2次元配列に数値を代入する
// 1から始まる自然数
int count = 1;
// 行 (i) と 列 (j) の順に代入
for (i = 0; i < a; i++) {
for (j = 0; j < b; j++) {
mat[i][j] = count;
count++;
}
}
// //以下の部分は表示の部分です (変更なし)
for (i = 0; i < a; i++) {
for (j = 0; j < b; j++) {
}
}
// //さて、最後に忘れずにすることと言えば?
// 3. 確保したメモリを解放する (ヒープメモリの解放)
// 各行の配列を解放
for (i = 0; i < a; i++) {
}
// 行ポインタの配列を解放
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4gLy8g5YuV55qE44Oh44Oi44Oq56K65L+dIChtYWxsb2MvZnJlZSkg44Gr5b+F6KaBCgppbnQgbWFpbih2b2lkKSB7CiAgICBpbnQgaSwgajsKICAgIC8vIOWkieaVsGEsIGLjga/ooYzmlbDjgIHliJfmlbAKICAgIGludCBhLCBiOwogICAgLy8gaW50ICoqbWF0IOOBryBpbnQqIOOBrumFjeWIlyAo6KGM44Gu44Od44Kk44Oz44K/KSDjgpLmjIfjgZnjg53jgqTjg7Pjgr8KICAgIGludCAqKm1hdDsKICAgIAogICAgLy8gYSjooYzmlbAp44GoYijliJfmlbAp44KS6Kqt44G/6L6844KACiAgICBzY2FuZigiJWQgJWQiLCAmYSwgJmIpOwogICAgCiAgICAvLyAvL+OBk+OBk+OBpzLmrKHlhYPphY3liJfjga7li5XnmoTnorrkv53jgpLjgZnjgosKICAgIAogICAgLy8gMS4gYeWAi+OBruihjOODneOCpOODs+OCvyAoaW50Kikg44KS5qC857SN44GZ44KL6YWN5YiX44KS56K65L+dCiAgICBtYXQgPSAoaW50KiopbWFsbG9jKGEgKiBzaXplb2YoaW50KikpOwogICAgCiAgICAvLyAyLiDlkITooYzjgavjgaTjgYTjgaZi5YCL44GuaW506KaB57Sg44KS5qC857SN44GZ44KL6YWN5YiX44KS56K65L+dCiAgICBmb3IgKGkgPSAwOyBpIDwgYTsgaSsrKSB7CiAgICAgICAgbWF0W2ldID0gKGludCopbWFsbG9jKGIgKiBzaXplb2YoaW50KSk7CiAgICB9CiAgICAKICAgIC8vIC8v44GT44GT44GnMuasoeWFg+mFjeWIl+OBq+aVsOWApOOCkuS7o+WFpeOBmeOCiwogICAgCiAgICAvLyAx44GL44KJ5aeL44G+44KL6Ieq54S25pWwCiAgICBpbnQgY291bnQgPSAxOyAKICAgIAogICAgLy8g6KGMIChpKSDjgagg5YiXIChqKSDjga7poIbjgavku6PlhaUKICAgIGZvciAoaSA9IDA7IGkgPCBhOyBpKyspIHsKICAgICAgICBmb3IgKGogPSAwOyBqIDwgYjsgaisrKSB7CiAgICAgICAgICAgIG1hdFtpXVtqXSA9IGNvdW50OwogICAgICAgICAgICBjb3VudCsrOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gLy/ku6XkuIvjga7pg6jliIbjga/ooajnpLrjga7pg6jliIbjgafjgZkgKOWkieabtOOBquOBlykKICAgIGZvciAoaSA9IDA7IGkgPCBhOyBpKyspIHsKICAgICAgICBmb3IgKGogPSAwOyBqIDwgYjsgaisrKSB7CiAgICAgICAgICAgIHByaW50ZigiJWQgIiwgbWF0W2ldW2pdKTsKICAgICAgICB9CiAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgfQogICAgCiAgICAvLyAvL+OBleOBpuOAgeacgOW+jOOBq+W/mOOCjOOBmuOBq+OBmeOCi+OBk+OBqOOBqOiogOOBiOOBsO+8nwogICAgCiAgICAvLyAzLiDnorrkv53jgZfjgZ/jg6Hjg6Ljg6rjgpLop6PmlL7jgZnjgosgKOODkuODvOODl+ODoeODouODquOBruino+aUvikKICAgIC8vIOWQhOihjOOBrumFjeWIl+OCkuino+aUvgogICAgZm9yIChpID0gMDsgaSA8IGE7IGkrKykgewogICAgICAgIGZyZWUobWF0W2ldKTsKICAgIH0KICAgIC8vIOihjOODneOCpOODs+OCv+OBrumFjeWIl+OCkuino+aUvgogICAgZnJlZShtYXQpOwogICAgCiAgICByZXR1cm4gMDsKfQ==