华为机试题 仿苹果

简介

使用递归来进行求解, 好像所有的动态规划都可以转为递归来求解??

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;;
    }
}
Hope is a good thing,maybe the best of things,and no good thing ever dies.----------- Andy Dufresne
原文地址:https://www.cnblogs.com/eat-too-much/p/14951788.html