openjudge 放苹果 1664

xiaoxiao2021-02-28  37

2018-3-15

这道题目老早就见过,但是在这一次写的时候又出现了 一个问题,我知道如果第n个盘子不用的话就等同于m个苹果放在n-1个盘子中,但是如果我们第n个盘子用了呢?那我们就得把所有的n个盘子里面都放一个才可以,因为我们这个是不考虑顺序的,我们必须保证得到的两个是完全没有交集的,我们不能把相同的情况计算多遍!如果说我们没有把n个盘子都放一个的话,那么我们在f(m,n-1)里面也会出现空的盘子,那可能就出现重复的情况了。

#include<iostream> using namespace std; int dfs(int m,int n){ if (m<0||n<0){ return 0; } if (m==1||n==1||m==0||n==0) return 1; return dfs(m,n-1)+dfs(m-n,n); } int main(){ int t; cin>>t; while (t--){ int m,n; cin>>m>>n; cout<<dfs(m,n)<<endl; } return 0; }
转载请注明原文地址: https://www.6miu.com/read-2628953.html

最新回复(0)