贴一下我做的dp的答案把 while(sc.hasNext()){             n=sc.nextInt();             k=sc.nextInt();             d=sc.nextInt();             ans=0;             /*backtrack(0,0);             System.out.println(ans);*/             int[][] dp=new int[n+1][2];             for (int i = 0; i < d; i++) {                 dp[i][1]=0;             }             dp[1][0]=1;             dp[0][0]=1;             for (int i = 2; i <= n; i++) {                 for (int j = 1; j <= k; j++) {                     if(i-j<0)continue;                     if(j<d) {                         dp[i][0]+=dp[i-j][0];                         dp[i][1] += dp[i - j][1];                     }                     else {                         dp[i][1] +=dp[i - j][1] + dp[i - j][0];                     }                 }             }             System.out.println(dp[n][1]);         }