ALGO - 22の分割数
問題の説明
整数N にk個の各部分、及び任意の2つが同じを持つことができ、空にすることができない(順序に関係なく)。
例えば:。N- = 7、。K = 3は、サブの3種類⾯方法は同じであると考えられます。
1 、1 、5。1 、5 、1。5 、1 、1。
Q.どのように多くの異なるポイントシステム。
START入力フォーマット
N 、K
出力フォーマット
⼀整数、すなわち、異なるサブメソッド
サンプルを失うSTART
7 3
サンプル出力
4 { 法律の点4種類:1 、1 、5、1、2 、4、1、3 、3、2、2 、3;}
データサイズ及び規則6 <N - <= 200であり、2 <= K <= 6。
分析:再帰、ステップは、残りの分割部の必要性の現在の数を表し~~
k個の部分にnが、最初のフレーム番号iが⼀/ K Nに等しく、残りのk-1 NIは部品の種類の数に分割されるまで、iが1に等しいから計算され、Iに等しいです。
...
フロント残数を分割する前に⼀数は、計画を確実にするように開始⼀N /ステップが終了するまで前方から各Iは、得られました
ポイントシャッターモード〜⽣生産のない重複が生じないことを確認するためには、減少されていません
#include <iostream>
using namespace std;
int cnt = 0;
void dfs( int front, int n, int step) {
if( step == 1) {
cnt++;
return ;
}
for( int i = front; i <= n / step; i++)
dfs(i, n - i, step - 1);
}
int main() {
int n, k;
cin >> n >> k;
dfs(1, n, k);
cout << cnt;
return 0;
}