郭姐分石頭問題

2021-09-02 00:00:58 字數 892 閱讀 9999

郭姐最近很無聊,於是就開始分石頭。郭姐有n顆石頭,她要把石頭分成m堆,每堆至少有乙個石子,她想知道有多少種分法

題就是分堆問題子問題

f(n,m)=f(n-1,m-1)+f(n-m,m)

遞推公式可以這樣理解:假設n=7,m=3;

那麼7個物品分成3堆可以大致兩種分法:

1.   3堆裡面有一堆放乙個,其他6個隨意放;

2.    每堆裡面至少放乙個,其餘4個再分成三堆看有幾種方法;

其實就是分成兩組,一組是m-1堆都放乙個以上的物品,1堆放1個;另一組每堆至少放乙個,剩餘的再往每堆中隨便放,看有幾種方法,兩者之和就是答案了;

為什麼只分這兩種情況呢?其實也不難理解,就是dp過來的,或者遞推,都一樣

ac**:

#includeint dp[350][350];

int main()

} int n,m;

scanf("%d%d",&n,&m);

printf("%d\n",dp[n][m]);

return 0;

}

emmm遞迴memory limited exceeded;

目前先理解這麼多了,以後遇到分堆問題再做討論

附上大佬的遞迴演算法**:

#includeusing namespace std;

int fun(int n,int m,int k)

for(int i=k;i<=n;i++)

return ans;

}int main()

return 0;

}

思路和我的不一樣,學長的思路是:每次分出的石子大於等於上次分出的石子,最後遞迴查詢。

矩陣快速冪的應用 郭姐散步

題目 公升級版 題意 gj散步,最開始在座標系的中心 0,0 他可以向上,向左,向右但是不能向下,給出n表示gj走的步數,對於小資料 第一題 n 1000000,對於大資料 第二題 n 1e18,求公有多少種走的方法?題解 常見的一種矩陣快速冪的應用。由分析可知,每一步的下一步可以有兩種或者三種選擇...

36 取石頭 10分

題目內容 有甲乙兩個人玩取石子遊戲,共有n個石子 1 n 30000 兩個人輪流取,甲先取.每次最多取m個 1 m 30000 最少取乙個,當輪到誰取的時候沒有石子了,誰就贏.比如4個石子,每次最多取3個,那末先取的人 甲 一定贏n和m誰大沒有限制.甲拿走3個,乙隻拿走1個,下面輪到甲了,但是沒有石...

二分 跳石頭

一定要學好程式設計。一年一度的 跳石頭 比賽又要開始了 這項比賽將在一條筆直的河道中進行,河道中分布著一些巨大岩石。組委會已經選 擇好了兩塊岩石作為比賽起點和終點。在起點和終點之間,有 n 塊岩石 不含起點和終 點的岩石 在比賽過程中,選手們將從起點出發,每一步跳向相鄰的岩石,直至到達 終點。為了提...