地鼠逃跑计划
地鼠逃跑计划
http://www.nowcoder.com/questionTerminal/6e73898260174fba9d454bf73bf9fe2e
题解
题目难度:简单
知识点:查找、递归
解题思路:此题使用递归方法即可以解决,因为每次地鼠换一个位置后,都会面临相同的选择,所以递归就可以。然后在建立路径变化时,面对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; }