日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ALGO-22_蓝桥杯_算法训练_数的划分(DP)

發布時間:2025/4/16 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ALGO-22_蓝桥杯_算法训练_数的划分(DP) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題描述將整數n分成k份,且每份不能為空,任意兩份不能相同(不考慮順序)。例如:n=7,k=3,下面三種分法被認為是相同的。115; 151; 511;問有多少種不同的分法。 輸入格式n,k 輸出格式一個整數,即不同的分法 樣例輸入 7 3 樣例輸出 4 {四種分法為:115;124;133;223;} 數據規模和約定6<n<=2002<=k<=6

?

記:

動態題目自己寫的依舊沒能得到滿分,學習他人的解題思路

(代碼參考:https://blog.csdn.net/liuchuo/article/details/51989133,https://blog.csdn.net/pason_pc/article/details/51228907)

例如輸入n=7,k=3

即得到了關于7的所有劃分

兩個重點:

1->代碼中i的值在prev-n/step之間,從prev開始,確保最小值不會比前一個小,避免出現重復情況;

到n/step結束,是因為當超過n/step時,會出現與前面檢索情況重復的現象,

(例dp(3,4,2),由于4=1+3或4=2+2在前面的情況出現過,故會出現重復情況,從而推出適用其他情況)

2->用于確定劃分的step,當step=1,即劃分完成,可進行計數

?

AC代碼:

1 #include <stdio.h> 2 3 int n,k; 4 int ans = 0; 5 6 void dp(int prev,int n,int step) 7 { 8 int i; 9 if (step == 1)/*劃分結束*/ 10 { 11 ans ++; 12 return ; 13 } 14 15 16 for (i = prev ; i <= n/step ; i ++) 17 { 18 dp(i,n-i,step-1); 19 } 20 return ; 21 } 22 23 int main(void) 24 { 25 scanf("%d %d",&n,&k); 26 dp(1,n,k); 27 printf("%d",ans); 28 return 0; 29 }

?

轉載于:https://www.cnblogs.com/mind000761/p/8764219.html

總結

以上是生活随笔為你收集整理的ALGO-22_蓝桥杯_算法训练_数的划分(DP)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。