#include <stdlib.h>
#include <stdio.h>
int main()
{
int rows = 5, cols = 5;
int ** board = (int **)malloc(rows * sizeof(int*)); //pointer to a table of pointers
//*board points to an array which stores addresses of the first column of each row
//board[0] = first row
//board[1] = second row
//board[0][0] = first column of first row
//board[2][3] = 4th column of 3rd row
board[0] = (int *)malloc(rows * cols * sizeof(int*)); //allocate memory for the whole board in one shot
for(int i = 1; i < rows; i++)
board[i] = *board + cols*i; //set the table of pointers
//testing code
//fill the first row with multiples of 1 (0, 1, 2, 3, 4)
//fill the second row with multiples of 2 (0, 2, 4, 6, 8)
//.
//.
//.
for(int i = 0; i < rows; i++)
for(int j = 0; j < cols; j++)
board[i][j] = (i+1)*j;
//printfs to check if the code is correct
for(int i = 0; i < rows; i++)
{
for(int j = 0; j < cols; j++)
printf("%d ", board[i][j]);
printf("\n");
}
}
I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KCmludCBtYWluKCkKewogICAgaW50IHJvd3MgPSA1LCBjb2xzID0gNTsKICAgIAogICAgaW50ICoqIGJvYXJkID0gKGludCAqKiltYWxsb2Mocm93cyAqIHNpemVvZihpbnQqKSk7IC8vcG9pbnRlciB0byBhIHRhYmxlIG9mIHBvaW50ZXJzCiAgICAvLypib2FyZCBwb2ludHMgdG8gYW4gYXJyYXkgd2hpY2ggc3RvcmVzIGFkZHJlc3NlcyBvZiB0aGUgZmlyc3QgY29sdW1uIG9mIGVhY2ggcm93CiAgICAvL2JvYXJkWzBdID0gZmlyc3Qgcm93CiAgICAvL2JvYXJkWzFdID0gc2Vjb25kIHJvdwogICAgLy9ib2FyZFswXVswXSA9ICBmaXJzdCBjb2x1bW4gb2YgZmlyc3Qgcm93CiAgICAvL2JvYXJkWzJdWzNdID0gNHRoIGNvbHVtbiBvZiAzcmQgcm93CiAgICAKICAgIGJvYXJkWzBdID0gKGludCAqKW1hbGxvYyhyb3dzICogY29scyAqIHNpemVvZihpbnQqKSk7IC8vYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgd2hvbGUgYm9hcmQgaW4gb25lIHNob3QKICAgIAogICAgZm9yKGludCBpID0gMTsgaSA8IHJvd3M7IGkrKykKICAgICAgIGJvYXJkW2ldID0gKmJvYXJkICsgY29scyppOyAvL3NldCB0aGUgdGFibGUgb2YgcG9pbnRlcnMKCiAgIC8vdGVzdGluZyBjb2RlCiAgIC8vZmlsbCB0aGUgZmlyc3Qgcm93IHdpdGggbXVsdGlwbGVzIG9mIDEgKDAsIDEsIDIsIDMsIDQpCiAgIC8vZmlsbCB0aGUgc2Vjb25kIHJvdyB3aXRoIG11bHRpcGxlcyBvZiAyICgwLCAyLCA0LCA2LCA4KQogICAvLy4KICAgLy8uCiAgIC8vLgogICBmb3IoaW50IGkgPSAwOyBpIDwgcm93czsgaSsrKQogICAJCWZvcihpbnQgaiA9IDA7IGogPCBjb2xzOyBqKyspCiAgIAkJICAgIGJvYXJkW2ldW2pdID0gKGkrMSkqajsKICAgCQkgICAgCiAgICAvL3ByaW50ZnMgdG8gY2hlY2sgaWYgdGhlIGNvZGUgaXMgY29ycmVjdAogICAJZm9yKGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykKICAgCXsKICAgCQlmb3IoaW50IGogPSAwOyBqIDwgY29sczsgaisrKQogICAJCSAgICBwcmludGYoIiVkICIsIGJvYXJkW2ldW2pdKTsKICAgCQlwcmludGYoIlxuIik7CiAgIAl9Cn0=