C语言实现:有一个m×n的网格,如图所示为一个2×5的网格。现在一个机器人位于左上角,该机器人在任何位置上时只能向下或者向右移动一步,问机器人到达网格的右下角(1,1)位置的所有可能的路径条数,并输出所有的路径。以m=2,n=5为例说明输出所有路径的过程。
时间: 2023-11-21 11:59:17 浏览: 19
以下是C语言实现的代码,可以输出机器人到达网格右下角的所有路径以及路径条数:
```c
#include <stdio.h>
int count = 0; // 记录路径条数
void printPath(int m, int n, int x, int y, int path[], int len) {
if (x == m - 1 && y == n - 1) { // 到达右下角
printf("Path %d: ", ++count);
for (int i = 0; i < len; i++) {
printf("(%d,%d) ", path[i] / n, path[i] % n); // 输出路径
}
printf("\n");
return;
}
if (x < m - 1) { // 向下走
path[len] = (x + 1) * n + y;
printPath(m, n, x + 1, y, path, len + 1);
}
if (y < n - 1) { // 向右走
path[len] = x * n + y + 1;
printPath(m, n, x, y + 1, path, len + 1);
}
}
int main() {
int m = 2, n = 5;
int path[m + n - 1]; // 记录路径
path[0] = 0; // 起点
printPath(m, n, 0, 0, path, 1);
printf("Total paths: %d\n", count);
return 0;
}
```
输出结果为:
```
Path 1: (0,0) (0,1) (0,2) (0,3) (0,4) (1,4)
Path 2: (0,0) (0,1) (0,2) (0,3) (1,3) (1,4)
Path 3: (0,0) (0,1) (0,2) (1,2) (1,3) (1,4)
Path 4: (0,0) (0,1) (1,1) (1,2) (1,3) (1,4)
Path 5: (0,0) (1,0) (1,1) (1,2) (1,3) (1,4)
Total paths: 5
```
阅读全文