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;
}


 

原文地址:https://www.cnblogs.com/Opaser/p/3662037.html