fork download
  1. #include <algorithm>
  2. #include <cstdio>
  3.  
  4. int main()
  5. {
  6. int A[] = { 0, 15, 20 };
  7. int B[] = { 0, 20, 15 };
  8.  
  9. const size_t MatrixDim = 3;
  10. int matrix[MatrixDim][MatrixDim] = { { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 } };
  11. // or memset(matrix, 0, sizeof(matrix));
  12.  
  13. // only operate on dimensions 1 and 2, leave 0,j and i,0 elements as 0.
  14. for (size_t i = 1; i < MatrixDim; ++i)
  15. {
  16. for (size_t j = 1; j < MatrixDim; ++j)
  17. {
  18. if (A[i] == B[j])
  19. {
  20. matrix[i][j] = matrix[i - 1][j - 1] + 1;
  21. printf("a. matrix at row %i column %i: %i\n", i, j, matrix[i][j]);
  22. }
  23. else
  24. {
  25. matrix[i][j] = std::max(matrix[i - 1][j], matrix[i][j - 1]);
  26. printf("b. matrix at row %i column %i: %i\n", i, j, matrix[i][j]);
  27. }
  28. }
  29. }
  30.  
  31. for (size_t i = 0; i < MatrixDim; ++i) {
  32. for (size_t j = 0; j < MatrixDim; ++j) {
  33. printf("%02d ", matrix[i][j]);
  34. }
  35. printf("\n");
  36. }
  37. }
  38.  
Success #stdin #stdout 0s 3296KB
stdin
Standard input is empty
stdout
b. matrix at row 1 column 1: 0
a. matrix at row 1 column 2: 1
a. matrix at row 2 column 1: 1
b. matrix at row 2 column 2: 1
00 00 00 
00 00 01 
00 01 01