放苹果(盘子不一样)

View Submit Statistics Clarify
总Time Limit: 1000ms Memory Limit: 65535kB
Description
把M个同样的苹果放在N个不同样的盘子里,允许有的盘子空着不放,问共有多少种放法?5,1,1和1,5,1是不同的放法。比如输入2 2,那么输出为3,如果输入为3 3,那么输出为10;输入8 3,那么输出为45.

Input
一行,两个整数M和N,分别代表苹果和盘子的数量
Output
一个整数,也即放法
Sample Input
2 2
Sample Output
3

#include <bits/stdc++.h>
using namespace std;
int n, m, sum = 0;
void dfs(int x, int step) {
	if(x == n && step == m) {
		sum++;
		return ;
	} 
	else if(x > n || step > m) return ;
	for(int i = 0; i <= n; i++)  dfs(i + x, step + 1);
}
int main() {
	cin >> n >> m;
	dfs(0, 0);
	cout << sum;
	return 0;
}