#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...