#include <algorithm>
#include <cstdio>
int main()
{
int A[] = { 0, 15, 20 };
int B[] = { 0, 20, 15 };
const size_t MatrixDim = 3;
int matrix[MatrixDim][MatrixDim] = { { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 } };
// or memset(matrix, 0, sizeof(matrix));
// only operate on dimensions 1 and 2, leave 0,j and i,0 elements as 0.
for (size_t i = 1; i < MatrixDim; ++i)
{
for (size_t j = 1; j < MatrixDim; ++j)
{
if (A[i] == B[j])
{
matrix[i][j] = matrix[i - 1][j - 1] + 1;
printf("a. matrix at row %i column %i: %i\n", i, j, matrix[i][j]);
}
else
{
matrix[i][j] = std::max(matrix[i - 1][j], matrix[i][j - 1]);
printf("b. matrix at row %i column %i: %i\n", i, j, matrix[i][j]);
}
}
}
for (size_t i = 0; i < MatrixDim; ++i) {
for (size_t j = 0; j < MatrixDim; ++j) {
printf("%02d ", matrix[i][j]);
}
printf("\n");
}
}
CSNpbmNsdWRlIDxhbGdvcml0aG0+CgkjaW5jbHVkZSA8Y3N0ZGlvPgoKCWludCBtYWluKCkKCXsKCSAgaW50IEFbXSA9IHsgMCwgMTUsIDIwIH07CgkgIGludCBCW10gPSB7IDAsIDIwLCAxNSB9OwoKCSAgY29uc3Qgc2l6ZV90IE1hdHJpeERpbSA9IDM7CgkgIGludCBtYXRyaXhbTWF0cml4RGltXVtNYXRyaXhEaW1dID0geyB7IDAsIDAsIDAgfSwgeyAwLCAwLCAwIH0sIHsgMCwgMCwgMCB9IH07IAoJICAvLyBvciBtZW1zZXQobWF0cml4LCAwLCBzaXplb2YobWF0cml4KSk7CgkgIAoJICAvLyBvbmx5IG9wZXJhdGUgb24gZGltZW5zaW9ucyAxIGFuZCAyLCBsZWF2ZSAwLGogYW5kIGksMCBlbGVtZW50cyBhcyAwLiAKCSAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBNYXRyaXhEaW07ICsraSkKCSAgewoJCWZvciAoc2l6ZV90IGogPSAxOyBqIDwgTWF0cml4RGltOyArK2opCgkJewoJCSAgaWYgKEFbaV0gPT0gQltqXSkKCQkgIHsKCQkJbWF0cml4W2ldW2pdID0gbWF0cml4W2kgLSAxXVtqIC0gMV0gKyAxOwoJCQlwcmludGYoImEuIG1hdHJpeCBhdCByb3cgJWkgY29sdW1uICVpOiAlaVxuIiwgaSwgaiwgbWF0cml4W2ldW2pdKTsKCQkgIH0KCQkgIGVsc2UKCQkgIHsKCQkJbWF0cml4W2ldW2pdID0gc3RkOjptYXgobWF0cml4W2kgLSAxXVtqXSwgbWF0cml4W2ldW2ogLSAxXSk7CgkJCXByaW50ZigiYi4gbWF0cml4IGF0IHJvdyAlaSBjb2x1bW4gJWk6ICVpXG4iLCBpLCBqLCBtYXRyaXhbaV1bal0pOwoJCSAgfQoJCX0KCSAgfQoKICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBNYXRyaXhEaW07ICsraSkgewogICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgTWF0cml4RGltOyArK2opIHsKICAgICAgICAgIHByaW50ZigiJTAyZCAiLCBtYXRyaXhbaV1bal0pOwogICAgICAgIH0KICAgICAgICBwcmludGYoIlxuIik7CiAgICAgIH0KCX0K