void mn( int n ) |
{ |
for ( int i = 0; i <= n; ++i ) |
{ |
m1[i] = 1; |
m2[i] = 0; |
} |
for ( int i = 2; i <= n; ++i ) //难点 |
{ //总共有n个括号,从第2个起每一个括号都要和前面那一个括号相乘 |
//所以可以忽略第一个括号 |
for ( int j = 0; j <= n; ++j ) //j代表最前面这个大括号的项数 |
for ( int k = 0; k + j <= n; k += i ) //在大括号后面,x都是以i方递增的 |
m2[j + k] += m1[j]; //这里就是大括号后面的括号与前面相乘的计算 |
for ( int j = 0; j <= n; ++j ) |
{ //算完以后都存在m2里面,所以要把值赋给m1, |
m1[j] = m2[j]; |
m2[j] = 0; |
} |
} |
} |