Вы можете посмотреть на это так:
Когда вы находитесь в верхнем левом углу и двигаетесь вниз, вы получаете новую матрицу с на 1 строкой меньше и таким же количеством столбцов.
Когда вы находитесь в верхнем левом углу и двигаетесь на 1 правую часть, а затем вниз, вы получаете новую матрицу с 1 строкой меньше и на 1 столбец меньше.
Когда вы находитесь в левом верхнем углу и двигаетесь на 2 правой части, а затемвниз, вы получите новую матрицу с 1 строкой меньше и 2 столбцами меньше.
и т. д.
Таким образом, чтобы вычислить результат для матрицы (R, C), вы можете вычислить еекак сумма результата из ряда меньших матриц.Как:
count(R, C) = count(R-1, C-0) + count(R-1, C-1) + count(R-1, C-2) + ... + count(R-1, 1)
Это может быть обработано рекурсией.Что-то вроде:
#include <stdio.h>
int count(int r, int c)
{
if (r == 1) return 1;
if (c == 1) return 1;
int sum = 0;
for (int i=0; i < c; ++i)
{
sum += count(r-1, c-i);
}
return sum;
}
int main()
{
int r=5, c=11;
int res=count(r,c);
printf("Result: %d\n", res);
}