K好数
有点坑 在他这里 0不算一位数
#include <iostream> #include <cstdio> #include <string.h> using namespace std; const int maxn=1005; const int mod=1000000007; long long dp[maxn][maxn]; int main() { int n,m; while(scanf("%d%d",&n,&m)==2){ for(int i=0;i<n;i++) dp[1][i]=1; for(int i=2;i<=m;i++){ for(int j=0;j<n;j++){ int ans=0; for(int k=0;k<n;k++){ if((k-j)==-1||(k-j)==1) continue; ans=(ans+dp[i-1][k])%1000000007; } dp[i][j]=ans; } } long long ans=0; for(int i=1;i<n;i++) ans=(ans+dp[m][i])%1000000007; // if(m==1) ans=(ans+dp[m][0])%1000000007; cout<<ans<<endl; } return 0; }