acdream 1707(dfs)
来源:互联网 发布:如何用excel编程 编辑:程序博客网 时间:2024/06/05 01:53
题意:
Problem Description
小晴天的后花园有好多好多的苹果树,某天,苹果大丰收~小晴天总共摘了M个苹果,我们假设苹果之间是不可分辨的。
为了保存苹果,小晴天买了N个一模一样的箱子,想要把苹果放进去,允许有的箱子是空的,请问小晴天有多少种不同的放法呢?
例如对于4个苹果,3个箱子,2+1+1和1+2+1和1+1+2 是同一种分法。
Input
多组数据,首先是一个正整数t(t<=100)表示数据的组数。
每组数据均包含二个整数M和N(1<=M,N<=10)。
Output
对于每组数据,输出一个整数,表示不同的放法数。
Sample Input
17 3
Sample Output
8
Hint
对于7个苹果,3个箱子
有7+0+0=6+1+0=5+2+0=4+3+0=5+1+1=4+2+1=3+2+2=3+3+1
这8种放法。
题解:直接dfs,要多加一个参数pre,保证每次填入的值都小于等于pre就不会发生重复。
#include <stdio.h>#include <algorithm>#include <map>using namespace std;int n, m, ans[15], res; void dfs(int cur, int pre, int sum) { if (cur == m) { if (sum == n) res++; return; } else if (cur == m) return; int temp = pre == -1 ? n : pre; for (int i = temp; i >= 0; i--) { dfs(cur + 1, i, sum + i); }} int main() { int t; scanf("%d", &t); while (t--) { scanf("%d%d", &n, &m); res = 0; dfs(0, -1, 0); printf("%d\n", res); } return 0;}
0 0
- acdream 1707(dfs)
- acdream 1105(dfs)
- ACdream dfs 专题
- ACdream群赛 Apple (dfs+博弈论)
- Acdream 1431Sum vs Product(dfs+剪枝)
- ACdream-1726-A Math game(dfs+二分)
- ACdream 1078 Cutting Figure (dfs)
- ACdream
- Acdream
- ACdream
- ACdream
- ACdream
- ACdream
- ACdream
- ACdream
- ACdream
- ACdream
- ACdream
- Linux常用命令说明
- Program work 14. Insertion Sort in Java
- linux-3.8.0 S5PV210 LCD显示屏驱动移植
- Spring Security(03)——核心类简介
- 远程桌面无法互相拷贝文件
- acdream 1707(dfs)
- 自定义圆形或圆角imageview
- 堆和栈的区别(转)
- Linux下写jni
- 驱动TFT要SDRAM做为显示缓存
- Intent action汇总(不断更新中)
- Android 物理键盘的默认启用与否修改
- 数据结构 - 树和森林表示与遍历
- android中界面与软键盘的交互