记录编号 |
137740 |
评测结果 |
AAAAAAAAAA |
题目名称 |
分组 |
最终得分 |
100 |
用户昵称 |
Ezoi_XY |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.002 s |
提交时间 |
2014-11-05 08:08:05 |
内存使用 |
0.30 MiB |
显示代码纯文本
#include<cstdio>
#include<cstring>
using namespace std;
int n, m, x[11], f[25][15], a[95][11], tot;
void dfs(int p, int l, int s){
if (p == m){
x[p] = n - s;
memcpy(a[tot++], x, sizeof(x));
return;
}
for (int i(l); s + i * (m - p + 1) <= n; ++i) dfs(p + 1, x[p] = i, s + i);
}
int main(){
freopen("dataa.in", "r", stdin);
freopen("dataa.out", "w", stdout);
int i, j;
scanf("%d%d", &n, &m);
f[0][0] = 1;
for (i = 1; i <= n; ++i)
for (j = i < m? i: m; j; --j)
f[i][j] = f[i - j][j] + f[i - 1][j - 1];
printf("%d\n", f[n][m]);
dfs(1, 1, 0);
for (i = 0; i < tot; ++i){
for (j = 1; j < m; ++j) printf("%d ", a[i][j]);
printf("%d\n", a[i][m]);
}
return 0;
}