1512個の順列

問題の説明
そこ財のn個の種類があり、各項目の番号を知っています。M選択した項目、そこからの置換の必要数。例えば、そこに2つの項目がA、Bがあり、その数は「AB」、「BA」二種類に配置されている選択項目から1、2です。
 
入力
各グループは、2本のデータ入力ラインを有し、最初の行は二つの数字であるN、M(1 <= M、N <= 10)、アイテムの数を示し、2行目の数を有するN、アイテムの数を示します。
 
出力
データ出力装置に対応する番号。(任意の動作が2 ^ 31を超えません)
 
サンプル入力
2 2 1 1
 
サンプル出力
2

 

参考文献:指数生成機能生成機能(生成機能)の詳細--- TankyWoo

次のように最終的なACコードがあります:

#include <ビット/ STDC ++ H> 
 使用して 名前空間STDを、
INT のmain(){
     int型 I、J、K、N、M、NUM [ 12 ]、FAC [ 12 ]。
    ダブル A [ 12 ]、B [ 12 ]。
    FAC [ 0 ] = 1 ;
    ための式(I = 1、I < 12 ; I ++)FAC [i]は= FAC [I- 1 ] * I。// 阶乘
    一方(〜のscanf(" %D%D "、&​​N、&M)){ 
        memsetの(0はsizeof ())。 
        のmemset(B、 0はsizeof (B))
         のための(iは= 1を scanfの(; I <= N-I ++)" %のD "、&​​NUM [I]); //は、iが1から始まる場合覚え 
         // 初期化A []最初の(...)を表し、Xおよびインデックスiのi番目の項目である
        ため(私は= 0 ; I <NUM = [ 1 ]; I ++)[I] = 1.0 / FAC [I ];
         // iは(...)項目が大きいアイテム、すなわち、いくつかの最初の乗算表す乗算演算
        のための(iは= 2 ; I <= N I ++ ){
             ため(J = 0 ; J <= M ; J ++){ // 係数の<= Mアイテムの各関係のみパワー
                 //i番目(.....)Jを乗算+ K <= M 初期回避計数結果のパワーを終了mの係数用語よりも高い
                ため(K = 0 ; K <= NUM [I] && J + K <= M、K ++)B [J + K] + = A [J] / FAC [K]; 
            } 
            ため(J = 0 ; J <= N; J ++ ){ 
                A [J] = B [J]; // A []現在の結果を保存 
                B [J] = 0 ; // B []は、次のバッファとして初期化される
            } 
        } 
        のprintf(" %.0f \ N- "、A [M] * FAC [M]); 
    } 
    戻り 0 
}

おすすめ

転載: www.cnblogs.com/heyour/p/12652642.html