3029 不重複正整數

2021-10-04 10:48:37 字數 987 閱讀 2613

單點時限: 2.0 sec

記憶體限制: 256 mb

整數拆分是把乙個正整數(簡稱為和數)拆分為乙個或若干個指定正整數(簡稱為零數,通常不區別式中各零數的排列順序)之和,這是乙個有趣的計算問題。通常拆分式中的零數有重複和不重複(即拆分式中各零數互不相同)兩種情況。

如果我們打算將乙個給定的正整數 n (n≤50)拆分為若干個不重複的正整數(a1+a2+⋯ai,i≥1)之和,其中每個零數的取值不大於給定的正整數 m (m≤20),即 1≤ai≤m,請問共有多少種不同的拆分方案。

輸入格式

第 1 行:乙個整數 t (1≤t≤10) 為問題數。

接下來共 t 行整數,每行對應 1 個問題,包含用乙個空格隔開的兩個正整數,分別表示 n (n≤50) 和m (m≤20)。

輸出格式

對於每個問題,輸出一行問題的編號(0 開始編號,格式:case #0: 等)。

然後對應每個問題在一行中輸出正整數 n 的拆分方案數。

樣例input

36 4

20 8

50 20

output

case #0:

2case #1:

13case #2:

1969

/*

思路:dfs

從1到m選擇幾個數使其和為n,每個數選和不選兩種狀態

*/#include

using

namespace std;

int n,m;

int ans=0;

void

dfs(

int i,

int sum)

if(i>m||sum>n)

return

;dfs

(i+1

,sum+i)

;dfs

(i+1

,sum);}

intmain()

return0;

}

再談大於指定正整數的最小「不重複數」問題

對於 大於指定正整數的最小 不重複數 問題 最初,在 演算法 求比指定數大且最小的 不重複數 問題的高效實現 中,我給出了乙個遞迴寫法,之後在同一篇博文中給出了乙個非遞迴寫法。中對我的寫法進行了更詳細的說明,並進行了重要改進。使之適合範圍更大。在 評playerc的 求比指定數大且最小的 不重複數 ...

再談大於指定正整數的最小「不重複數」問題

對於 大於指定正整數的最小 不重複數 問題 最初,在 演算法 求比指定數大且最小的 不重複數 問題的高效實現 中,我給出了乙個遞迴寫法,之後在同一篇博文中給出了乙個非遞迴寫法。中對我的寫法進行了更詳細的說明,並進行了重要改進。使之適合範圍更大。在 評playerc的 求比指定數大且最小的 不重複數 ...

提取不重複的整數

題目描述 輸入乙個 int 型整數,按照從右向左的閱讀順序,返回乙個不含重複數字的新的整數。輸入描述 輸入乙個 int 型整數。輸出描述 按照從右向左的閱讀順序,返回乙個不含重複數字的新的整數。示例1 輸入 9876673 輸出 37689 示例 1 網頁 ok linux 也 ok linux 編...