贴一下我做的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]); }

相关推荐

牛客网
牛客企业服务