Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的eulerProject函数中的错误结果_Java_Algorithm - Fatal编程技术网

Java 我的eulerProject函数中的错误结果

Java 我的eulerProject函数中的错误结果,java,algorithm,Java,Algorithm,我试图找到15号欧拉问题的解决方案。 (查找从栅格左上角到右下角的路径数) 第一次尝试没有成功,因为我将所有可能的组合都存储在一个列表中,结果导致了堆问题(这是可以预测的,不是吗) 在第二次尝试中,我决定计算网格中每个点存在多少种可能的方式。 例如,(0,0)有一个唯一的访问方式,(1,1)有两个(通过(0,1)和另一个通过(1,0))。对于每一点,我们总结前面两点的可能方式。 由于这似乎是一个很好的解决方案,没有太多的内存问题,我仍然没有得到正确的答案,你能告诉我错误的来源吗(因为我假设我犯了

我试图找到15号欧拉问题的解决方案。 (查找从栅格左上角到右下角的路径数)

第一次尝试没有成功,因为我将所有可能的组合都存储在一个列表中,结果导致了堆问题(这是可以预测的,不是吗)

在第二次尝试中,我决定计算网格中每个点存在多少种可能的方式。 例如,(0,0)有一个唯一的访问方式,(1,1)有两个(通过(0,1)和另一个通过(1,0))。对于每一点,我们总结前面两点的可能方式。 由于这似乎是一个很好的解决方案,没有太多的内存问题,我仍然没有得到正确的答案,你能告诉我错误的来源吗(因为我假设我犯了一个错误,而不是很明显)

SNA功能化源代码:

    @Test
public void testFoo() {
    long[][] grid = new long[20][20];
    for(int i=0; i<20; i++){
        grid[0][i]=1;
        grid[i][0] =1;
    }
    int steps=1;
    while(steps<21){
        for(int i=steps; i<20; i++){
            grid[i][steps]= grid[i-1][steps]+grid[i][steps-1];
            grid[steps][i]= grid[i-1][steps]+grid[i][steps-1];
        }
        steps++;
    }
    System.out.println(grid[19][19]); //35345263800
}
@测试
公共void testFoo(){
长[][]网格=新长[20][20];

对于
2×2
网格中的(int i=0;i),存在
3×3
交点,因此需要
3×3
数组

0 1 2 0 ┌─┬─┐ 1 ├─┼─┤ 2 └─┴─┘ 0 1 2 0┌─┬─┐ 1.├─┼─┤ 2.└─┴─┘ 因此,对于
20×20
网格,需要
21×21
数组

0 1 2 0 ┌─┬─┐ 1 ├─┼─┤ 2 └─┴─┘

另一种解决方案:在数学中使用组合,答案是。

2×2
网格中,存在
3×3
交点,因此需要
3×3
数组

0 1 2 0 ┌─┬─┐ 1 ├─┼─┤ 2 └─┴─┘ 0 1 2 0┌─┬─┐ 1.├─┼─┤ 2.└─┴─┘ 因此,对于
20×20
网格,需要
21×21
数组

0 1 2 0 ┌─┬─┐ 1 ├─┼─┤ 2 └─┴─┘

另一个解决方案:在数学中使用组合,答案是。

i=steps
开始意味着你总是有
i>=steps
,这意味着你只看正方形的右上半部分。为什么不先把重点放在2x2情况下的正确答案上呢?@Teepeemm(2.2)数字看起来很精确(等于2),网格(3,3)=6.在我的循环中,对于步骤=n,我已经用iYou计算了网格的每个部分。johnchen902注意到了哪里出了问题。事实上,你在19x19网格上有正确的答案。@Teepeemm我真诚的道歉,我不明白你的意思。对于2x2的情况,答案是绝对错误的,因为我需要一个3x3网格。谢谢你的提示!!从
i=steps
开始意味着你总是有
i>=steps
,这意味着你只看正方形的右上半部分。为什么不先把重点放在2x2案例的正确答案上?@Teepeemm(2.2)数字看起来精确(等于2),网格(3,3)=6.在我的循环中,对于步骤=n,我已经用iYou计算了网格的每个部分。johnchen902注意到了哪里出了问题。事实上,你在19x19网格上有正确的答案。@Teepeemm我真诚的道歉,我不明白你的意思。对于2x2的情况,答案是绝对错误的,因为我需要一个3x3网格。谢谢你的提示!!哇。这就是它显然失败的原因。非常感谢!!哇。这就是它显然失败的原因。非常感谢!!