image.png
假設(shè)二維坐標(biāo)內(nèi),左下角的第一個(gè)格子是(1孵淘,1)蒲障,把棋盤的右上角看做二維坐標(biāo)(M,N),用 f(m瘫证,n揉阎,i,j背捌,s)表示小球初始坐標(biāo)在(i毙籽,j),在步長s內(nèi)毡庆,走出m*n的格子的走法總數(shù)坑赡,f(i,j)=f(m, n, i ,j - 1, s - 1) + f(m, n, i-1, j, s - 1) +f(m, n, i + 1, j, s - 1) + f(m, n, i, j + 1, s - 1)烙如。
* 遞歸求解
* @return
*/
private static int process(int m, int n, int i, int j, int s) {
if (i < 1 && s >= 0) {
return 1;
}
if (j < 1 && s >= 0) {
return 1;
}
if (i > m && s >= 0) {
return 1;
}
if (j > n && s >= 0) {
return 1;
}
if (s == 0) {
return 0;
}
return process(m, n, i ,j - 1, s - 1) + process(m, n, i-1, j, s - 1) +
process(m, n, i + 1, j, s - 1) + process(m, n, i, j + 1, s - 1);
}