我试图使用动态编程方法解决格子路径问题。
从 22 格的左上角开始,有 6 条路线(没有回溯)到右下角。
2020 年网格中有多少条路线?
这是我为解决这个问题而编写的代码。我哪里错了。我似乎每次都得到错误的输出。我是否跨越了可变数据类型的一些界限?
#include <stdio.h>
int count = 0;
int limita,limitb;
long long int cache[20][20];
unsigned long long int start(int a,int b)
{
unsigned int long long i = 0;
if(a == limita && b == limitb)
return 1;
if(cache[a][b] != -1)
return cache[a][b];
if(a != limita)
i += start(a+1, b);
if(b != limitb)
i += start(a, b+1);
cache[a][b] = i;
return i;
}
int main(void)
{
limita = limitb = 19;
int i,j;
for(i = 0; i < 20; i++)
for(j = 0; j <20;j++)
cache[i][j] = -1;
unsigned long long int number = start(0,0);
printf("The number of ways to reach the end is %llu\n",number);
return 0;
}
请帮帮我