先把可以首尾相连的单词间连边,这样问题就转化为在n步以内,从起点到终点走奇数步,一共多少种走法
由矩阵乘法的意义,矩阵A中的aij可以表示从i到j走一步可以有多少种走法,A^2中的aij可以表示从i到j走一步可以有多少种走法,依此类推,A^n中的aij表示走n步有多少种走法
那么,问题就转化为S=A+A^3+A^5+...+A^k中,Sse 的值,s,e分别为起点和终点,k为比n小的数中最大的奇数
还是可以二分
f(k)=A+A^3+A^5+...+A^k
k%4=1时,f(k)=f(k-2)+A^k
k%4=3时,f(k)=f(k/2)+f(k/2)*A^(k/2)
一开始把数组开大了,导致了栈溢出,还有就是_pow函数里矩阵x忘记初始化导致错误,这些都要注意
代码: