划分数 (DP)
输入:
n=4
m=3
M=10000
输出:
4 (1+1+2=1+3=2+2=4)
复杂度(nm)
1 int n,m; 2 int a[MAX]; 3 4 int dp[MAX][MAX]; //数组 5 6 void solve() 7 { 8 dp[0][0]=1; 9 for(int i=0; i<=m; i++){ 10 for(int j=0; j<=n; j++){ 11 if(j-i >= 0){ 12 dp[i][j]=(dp[i-1][j]+dp[i][j-i])%M; 13 } 14 else{ 15 dp[i][j]=dp[i-1][j]; 16 } 17 } 18 } 19 printf("%d\n",dp[m][n]); 20 }