简介
使用递归来进行求解, 好像所有的动态规划都可以转为递归来求解??
m 个 苹果 放在 n 个碟子上 = m个苹果放在n-1个碟子上的方法 + 所有的碟子都是满的, 但是剩下m - n 个进行放置的方法
比如 7 个苹果放在 3个碟子上
等于 7个苹果放在2个碟子上的个数 + 4 个苹果放在3个碟子上的个数.
感觉是有点云, 凤城两种, 一个盘子有空的情况, 另一种是, 盘子上都有水果的情况.
return dfs(m, n-1) + dfs(m-n, n);
code
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<vector<int> > res;
int dfs(int m, int n) {
if (m < 0 || n < 0) {
return 0;
}else if(m == 1 || n == 1){
return 1;
}else {
return dfs(m, n-1) + dfs(m-n, n);
}
}
int main() {
int m, n;
while(cin >> m >> n) {
cout << dfs(m, n) << endl;;
}
}
---------------------------我的天空里没有太阳,总是黑夜,但并不暗,因为有东西代替了太阳。虽然没有太阳那么明亮,但对我来说已经足够。凭借着这份光,我便能把黑夜当成白天。我从来就没有太阳,所以不怕失去。
--------《白夜行》