package huawei;
/**
* 请注意不要修改包名、类名,否则将导致考试成绩失效
*/
public class JavaTest
{
/**
* 计算出nxm个宫格从左上解走到右下角,总共有多少种走法,不允许走回头路,即: 只能往右走和往下走,不能往上和往左走。
*
* @param n : 横向的格子数;m: 竖向的格子数
* @return :返回走法个数。
*/
private static int column;
private static int row;
private static int count;
public long getLatticePaths(int n, int m)
{
if(n<=0 || m<=0)
{
return -1;
}
count = 0;
row = n;
column = m;
interator(1, 0);
interator(0,1);
return count;
}
public long interator(int n, int m)
{
if(n<column)
{
interator(n + 1, m);
}
if(m<row)
{
interator(n, m+1);
}
if(n==column && m == row)
{
count++;
}
return 0;
}
public static void main(String[] args)
{
JavaTest c = new JavaTest();
int n = 2;
int m = 2;
System.out.println("the total paths is: " + c.getLatticePaths(n, m));
}
}
单元测试:
package testcase;
import static org.junit.Assert.*;
import org.junit.Test;
import huawei.JavaTest;
public class JavaTestTest extends JavaTest {
@Test
public void test_Case1() {
assertEquals(getLatticePaths(2,2),6);
}
@Test
public void test_Case2() {
assertEquals(getLatticePaths(6,2),28);
}
}