藍橋杯 演算法練習 數的劃分
阿新 • • 發佈:2019-01-05
這個題目感覺到了用動態規劃,但是奈何組合數學的不好,沒有寫出狀態轉移方程
參考一個博主的部落格,寫出了滿分程式碼,還特意搜了一下斯特林數,學到了學到了
詳細解答在博主的部落格裡
連結如下
https://www.cnblogs.com/wengsy150943/p/5509787.html
這是一道不太一樣的dp題,他的邊界在遞推的中間,而且還要注意每一維度的範圍,否則知道狀態轉移方程也寫不出來
算是比一般dp要難一些的dp了吧
記下來備查
滿分程式碼如下
#include <iostream> #include <memory.h> using namespace std; int dp[201][201]; //注意 陣列的第二維度的範圍要和第一維度一樣 要不然會出錯 int main() { int n,m; cin>>n>>m; memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++){ for(int j=1;j<=i;j++){ if(i==j){ dp[i][j]=1; } else dp[i][j]=dp[i-j][j]+dp[i-1][j-1]; } } cout<<dp[n][m]; return 0; }