一道经典的动态规划,很有数位dp的味道,附上AC代码。
代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int k = in.nextInt();
int l = in.nextInt();
int[][] dp = new int[l+1][k];
for(int j = 0; j<k; j++)
dp[1][j] = 1;
int j = 0;
for(int i = 2; i<=l; i++){
for(j = 0; j<k; j++){
for(int h = 0; h<k; h++){
if(j == h+1 || j == h-1)
continue;
dp[i][j] += dp[i-1][h]%1000000007;
dp[i][j] = dp[i][j] % 1000000007;
}
dp[i][j] = dp[i][j] % 1000000007;
}
}
int cnt = 0;
for( j = 1; j<k; j++){
cnt += dp[l][j]%1000000007;
cnt = cnt%1000000007;
}
System.out.println(cnt);
}
}