题解

题目难度:简单

知识点:查找、递归

解题思路:此题使用递归方法即可以解决,因为每次地鼠换一个位置后,都会面临相同的选择,所以递归就可以。然后在建立路径变化时,面对x,y的坐标变化时,可以采用两个数组保存数据变化的选择。

题解

递归算法:
首先创建一个解决问题的函数,这个函数主要作用就是递归自己。在设计这个函数时,递归函数主要需要思考两个点:
1.在面对临界情况时的特殊处理,需要充分考虑各种临界值,对这种情况需要作出跳出递归循环;
2.在非临界时,继续进行递归,一直调用这个函数进行重复处理。

#include <iostream>
using namespace std;
//松鼠一共有四种走法,向上、下、左、右。
//在保存走法时,可以使用两个数组来保存坐标的变化
int dx[4] = {1, -1, 0, 0};
int dy[4] = {0, 0, 1, -1};
//输入数据
int paths = 0;
int m, n, x, y, k;
//创建一个递归函数
void Search(int x, int y, int k) {
    if (k <= 0) return;
    for (int i = 0; i < 4; ++i) 
    {
        int temp_x = x + dx[i];
        int temp_y = y + dy[i];
        if (temp_x < 0 || m <= temp_x || temp_y < 0 || n <= temp_y) 
            paths++;
        else Search(temp_x, temp_y, k - 1);
    }
}
int main() {
    cin>> m >> n >> x >> y >> k;
    Search(x, y, k);
    cout << paths << endl;
    return 0;
}