分割数:ブルーブリッジ

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; 
}

 

公開された736元の記事 ウォンの賞賛123 ・は 80000 +を見て

おすすめ

転載: blog.csdn.net/S_999999/article/details/103341543