Two Arrays
相当于构建一个长度为2*m的非递减序列
然后求这个序列就是dp令dp[i][j]为长度为i,结尾数字为j的非递减序列数量
状态转移方程
#include <iostream>
#include<string>
const int mod=1e9+7;
long long int dp[30][2010]={0};
using namespace std;
int main()
{int n,m;
cin>>n>>m;
int p=2*m;
for(int i=1;i<=n;i++)
dp[1][i]=1;
for(int i=2;i<=p;i++)
{for(int j=1;j<=n;j++)
{for(int k=1;k<=j;k++)
{dp[i][j]=dp[i][j]+dp[i-1][k];
dp[i][j]%=mod;
}
}
}
long long int all=0;
for(int i=1;i<=n;i++)
{all+=dp[p][i];
all%=mod;
}
cout<<all;
return 0;
}