题解 | #放苹果#
放苹果
https://www.nowcoder.com/practice/bfd8234bb5e84be0b493656e390bdebf
#include <iostream> using namespace std; int f(int apple, int plate, int start){ int ans = 0; if(start > apple) return 0; else if(apple == 1 || plate == 1) return 1; else if(apple < plate) return f(apple, apple, start); else { for(int i = start; i <= apple / 2; i++){ ans += f(apple - i, plate - 1, i); } return ans; } } int main() { int apple, plate; cin >> apple >> plate; cout << f(apple, plate, 0) << endl; return 0; }