
题意:2*N网格,从左上走到右下,8个方向可以移动,总共有多少种方法?
第一列和最后一列:每列有2中可能;
中间列:每列有3中可能;


//color game
#include <stdio.h>
const long long mod=1e9+7;
long long QuickPow(long long a,long long n){
long long tmp=a;
long long ans=1;
while(n){
if(n&1)
ans=tmp*ans%mod;
tmp=tmp*tmp%mod;
n>>=1;
}
return ans%mod;
}
int main(){
long long n;
while(scanf("%lld",&n)){
if(n==1)
printf("1\n");
else
printf("%lld\n",4*QuickPow(3,n-2)%mod);
}
return 0;
}
2*N网格路径算法

本文探讨了一个经典算法问题——在2*N的网格中,从左上角到右下角,利用8个方向移动,计算所有可能的路径数量。文章通过分析网格特性,提出了一种高效算法,特别关注了边界条件和递归思想的应用。该算法适用于解决网格路径计数问题,尤其当网格大小较大时,其效率优势更为明显。

被折叠的 条评论
为什么被折叠?



