Drill

ProblemsC++ › patterns

How many ways across the yard

mediumpatternsRecursionGridsMathC++

A forklift crosses a rectangular yard from the top-left bay to the bottom-right one, and may only ever drive right or down. Planning wants the number of distinct routes.

routesAcross(rows: int, columns: int) → int

C++ needs a compiler and Drill does not host one yet, so this page is the reference rather than an exercise: the problem, worked examples, and the solution in full. To type it out, the same problem runs in Python.

Solve it in Python →

Where you start

int routesAcross(int rows, int columns) {
    
}

Worked examples

CallResult
routesAcross(3, 3)6
routesAcross(1, 1)1
routesAcross(2, 3)3
routesAcross(0, 5)0

Hint

The routes into a bay are the routes into the bay above plus the routes into the bay to its left. The top row and left column have exactly one each.

Reference solution in C++
int routesAcross(int rows, int columns) {
    if (rows <= 0 || columns <= 0) return 0;
    std::vector<std::vector<int>> ways(rows, std::vector<int>(columns, 1));
    for (int r = 1; r < rows; r++) {
        for (int c = 1; c < columns; c++) {
            ways[r][c] = ways[r - 1][c] + ways[r][c - 1];
        }
    }
    return ways[rows - 1][columns - 1];
}

The same problem in another language

More patterns problems in C++