第三次训练营!
被细节坑了的一天emmmmm 虽然这样说,但题目思想还是在帮助下才想到的,所以依然值得记录。
图片说明
思路一:
深度遍历

void depth(char a[50][50], int i,int j,long long * sum)
{
if(i==n-1&&j==m-1)
{
sum=sum+1;
return;
}
if(a[i][j]=='D'||a[i][j]=='B')
{
if(j<m-1)
depth(a,i,j+1,sum);
}
if(a[i][j]=='R'||a[i][j]=='B')
{
if(i<n-1)
depth(a,i+1,j,sum);
}
}

但是发现时间过大,超限了,所以在小伙伴的指点下,采用了动态规划的方式。
即到每一个格子的路径数量都是到它上面和左面的格子的路径总和。
关键代码只有一句:
图片说明
(另外还要注意初始化ff[][]数组的第一行和第一列)
但是反复提交都没有过,最后发现是由于没有求余的原因。
取模公式:
(a + b) % p = (a % p + b % p) % p
(a - b) % p = (a % p - b % p) % p
(a * b) % p = (a % p * b % p) % p
a ^ b % p = ((a % p)^b) % p
一定注意要在运算规则中取模,不能只在出结果的时候求余。