比赛 |
搜索题... |
评测结果 |
AAAAAAAAAA |
题目名称 |
分组 |
最终得分 |
100 |
用户昵称 |
Ezoi_XY |
运行时间 |
0.009 s |
代码语言 |
C++ |
内存使用 |
0.30 MiB |
提交时间 |
2014-11-04 18:59:00 |
显示代码纯文本
- #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;
- }