洛谷P1025 數的劃分 dfs

2021-09-24 07:23:04 字數 547 閱讀 8660

#include#include#includeusing namespace std;

int ans = 0;

int n,k;

void dfs(int i,int t,int j)

for(int p = i ;p*(k-t)+j<=n ; p++)

dfs(p,t+1,j+p);

}int main(){

cin>>n>>k;

dfs(1,0,0);

cout《挺簡單的dfs,為了保證不重複,只需要確保取數的是遞增或遞減的順序(不需要嚴格遞增,前後可以相等),

這次存在的問題是:第一,開始dfs是dfs(1,1,1)直接預設了一定會去到1,但其實有很多不取的時候,如果要1,1,1的話可能要在dfs裡改一下程式,但還是1,0,0好一些,印象裡大部分dfs都是從1,0,0開始,

第二 搜尋邊界時沒有用if的巢狀直接,if(kt && jn)導致,如果k=t了但是j<>n,會一直搜尋下去,導致tle,一直沒有注意過.以後要注意在迴圈邊界時不管怎樣先全部return,再在前面補上其他操作,不要在if裡用&&./

洛谷 P1025 數的劃分

題目描述 將整數n分成k份,且每份不能為空,任意兩個方案不相同 不考慮順序 例如 n 7,k 3,下面三種分法被認為是相同的。1,1,5 1,5,1 5,1,1 問有多少種不同的分法。輸入輸出格式 輸入格式 n,k 6 n 200,2 k 6 輸出格式 乙個整數,即不同的分法。輸入輸出樣例 輸入樣例...

洛谷P1025 數的劃分

將整數n分成k份,且每份不能為空,任意兩個方案不相同 不考慮順序 例如 n 7,k 3,下面三種分法被認為是相同的。1,1,5 1,5,1 5,1,1 問有多少種不同的分法。輸入格式 n,k 6 輸出格式 乙個整數,即不同的分法。輸入樣例 1 7 3 輸出樣例 1 4 四種分法為 1,1,5 1,2...

洛谷P1025 數的劃分

將整數n分成k份,且每份不能為空,任意兩個方案不相同 不考慮順序 例如 n 7,k 3,下面三種分法被認為是相同的。1,1,5 1,5,1 5,1,1 問有多少種不同的分法。輸入格式 n,k 6 輸出格式 乙個整數,即不同的分法。輸入樣例 1 複製7 3 輸出樣例 1 複製4 四種分法為 1,1,5...