【发布时间】:2012-01-17 18:44:29
【问题描述】:
我需要编写一个方法来检查有多少种可能的方式来完成一个网格(一个二维数组)。
网格内部的运动是这样的:
从 [0][0] 开始,取其中的数字(例如 14),然后转到[array.[0][0]%10][array.[0][0]/10] 或 [array.[0][0]/10][array.[0][0]%10]
对于我们的示例:
[1][4] 或 [4][1]
直到到达数组的末尾(右下角)。
我可以到达数组的末尾(所有可能的方式) - 我的问题是计算我实际完成数组的次数 - 我不能在方法之外使用变量,并且方法必须是递归的.
这是代码:
private static int howMany(int[][] array, int y, int x, int count) {
if(y+(array[y][x]%10) < array.length && x+(array[y][x]/10)< array[y].length && array[y][x]!=0) {
System.out.println("["+y+"]["+x+"] is: "+array[y][x]);
howMany(array, y+(array[y][x]%10), x+(array[y][x]/10),count);
}
if(y+(array[y][x]/10) < array.length && x+(array[y][x]%10)< array[y].length && array[y][x]!=0) {
System.out.println("["+y+"]["+x+"] is: "+array[y][x]);
howMany(array, y+(array[y][x]/10), x+(array[y][x]%10),count);
}
if(y==array.length-1 && x==array[y].length-1) count++;
return count;
}
这显然是错误的,并且会返回最初的计数,我尝试了许多其他方法但无济于事...... 这是完整的类(带有要测试的数组):
编辑:非常感谢大家的帮助!
【问题讨论】: