#include<bits/stdc++.h> using namespace std; const int mod = 1e9+7; int main(){ int n,m; cin>>n>>m; if(n<=2){ cout<<1<<endl; } vector<vector<vector<long>>>dp(n+1,vector<vector<long>>(m+1,vector<long>(m+1,0))); for(int i=1;i<=m;i++){ dp[i][i][0]=1; } for(int i=3;i<=n;i++){ // 第二层表示这一步迈出的台阶数 for(int j=1;j<=min(m,i);j++){ // 第三层表示上一步迈出的台阶数 for(int k=1;k<=min(m,i);k++){ if(k==j){ continue; } for(int s=0;s<=min(m,i);s++){ if(s==j||s==k){ continue; } dp[i][j][k] += dp[i-j][k][s]; dp[i][j][k]%=mod; } } } } long long sum=0; for(int j=1;j<=m;j++){ for(int k=1;k<=m;k++){ sum+=dp[n][j][k]; sum%=mod; } } cout<<sum<<endl; return 0; }
3 2

相关推荐

shtdbb_:还不错,没有让你做了笔试再挂你
点赞 评论 收藏
分享
牛客网
牛客企业服务