class Solution { public int countRoutes(int[] pos, int start, int end, int f) { int n = pos.length; int mod = (int)(1e9 + 7); long[][] dp = new long[f+1][n]; // dp[i][j] 表示当前剩余油量为i,当前位置为j的总路径数目 dp[0][start] = 1; for(int i = 1; i <= f; i++) { for(int j = 0; j < n; j++) { for(int k = 0; k < n; k++) { if(k == j) continue; int sum = Math.abs(pos[k]-pos[j]); if(sum > i) continue; dp[i][j] += dp[i-sum][k]; } dp[i][j] %= mod; } } long res = 0; for(int i = 0; i <= f; i++) { res += dp[i][end] % mod; } return (int)(res%mod); } }