https://blog.csdn.net/sihai12345/article/details/65635566
要将dp[i][j]看成是长度为i第一位是j的所有取值状态
然后最后进行筛选 就是dp[l-1][j] 注意 j是从1~k-1因为第一位不能是
package lanqiao;
import java.util.Scanner;
public class ALGO_3_2 {
final static int MOD=1000000007;
public static void main(String []args) {
Scanner sc=new Scanner(System.in);
int k=sc.nextInt();
int l=sc.nextInt();
int num=0;
int [][]nums=new int[l][k];
for(int i=0;i<l;i++)
for(int j=0;j<k;j++)
nums[i][j]=0;
for(int j=0;j<k;j++)
nums[0][j]=1;
for(int i=1;i<l;i++)
for(int j=0;j<k;j++)
for(int x=0;x<k;x++) {
if(x!=j-1&&x!=j+1) {
nums[i][j]+=nums[i-1][x];
nums[i][j]%=MOD;
}
}
for(int j=1;j<k;j++) {
num+=nums[l-1][j];
num%=MOD;
}
System.out.println(num);
}
}
零