1 条题解
-
0
大白话思路
把 m 个相同苹果放在 n 个相同盘子里,先避免重复数同一种摆法。若 m<n,多出的空盘子不影响答案;否则分为“至少一个空盘”与“每盘至少一个苹果”:f(m,n)=f(m,n-1)+f(m-n,n)。m=0 或 n=1 为边界。可记忆化减少重复计算。
C++17 标准解
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #define N 1000010 using namespace std; int calculate(int m,int n) { if(m==0||n==1) return 1; if(m<n) return calculate(m,m); return calculate(m,n-1)+calculate(m-n,n); } int main() { int k; int m,n; cin>>k; while(k--) { cin>>m>>n; cout<<calculate(m,n)<<endl; } return 0; }来源:HEEKDragonOne/ACM,一本通 1206;固定提交 29b5b378f6257c2d9ba99452d0f5b770a26c826c。仅赛后开放。
- 1
信息
- ID
- 1007
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 8
- 标签
- 递交数
- 22
- 已通过
- 6
- 上传者
