给出三个正整数-nm-和-mod。nn有多少个-1∼n-的排列构成的有序-m-元组p1p2p3pm-满足:nn字典序:p1p2p3pmnn-n逆序对数:p1p2p3pmnn-n设-fnm-为答案模-mod的值。对于所有-1=i=n1=j=m请你输出-fij。nn输入格式n输入包含一行三个正整数-nmmod。nn输出格式n输出一个n×m-的矩阵第-i-行第-j-列为-fij。nn写出c++代码
#include
const int N = 1005, M = 15; int n, m, mod; int f[N][M][M];
int main() { cin >> n >> m >> mod;
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= i && j <= m; j ++ )
f[i][j][j] = 1;
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= i && j <= m; j ++ )
for (int k = j - 1; k >= 1; k -- )
{
f[i][j][k] = f[i - 1][j][k] * (j - k) % mod;
for (int p = k + 1; p <= j; p ++ )
f[i][j][k] = (f[i][j][k] - f[i - 1][j][p] * (p - k) % mod + mod) % mod;
}
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= m; j ++ )
{
int res = 0;
for (int k = 1; k <= j; k ++ )
res = (res + f[i][j][k]) % mod;
cout << res << ' ';
}
return 0;
}
原文地址: https://www.cveoy.top/t/topic/q94 著作权归作者所有。请勿转载和采集!