題目名字 數的劃分
題目鏈接
題意
給數字n,講數字n分為m份,共有多少種分法,不能重復,分成一樣的數字也不行
思路
- 看到這種分數字的先化成有多少個球要分到多少個籃子里去
- 再想兩個分法并且加起來,一個是每個籃子最多只能分一個球,然后是每個籃子至少放一個球以上,這些情況加起來就是所有的分法的情況;
- 要用二維數組來寫,第一個是球的數量,第二個是籃子的數量
算法一:遞歸
代碼
#include<iostream>
using namespace std;
int main(){int n,m;cin>>n>>m;int a[n+5][n+5];for(int i=1;i<=n;i++){a[i][1]=1;}for(int i=1;i<=n;i++){for(int j=2;j<=m;j++){if(i>=j){//i是數字的數量j是籃子的數量 a[i][j]=a[i-1][j-1]+a[i-j][j];//一個籃子只裝裝一個,加,減去只裝了一個數字的籃子的數量;} }}cout<<a[n][m];return 0;
}