順列(nPr):C++コード

最初に

C++で書いた、順列(nPr)コードです。

表記

順列
\, _nP_r = \frac{n!}{(n-r)!}\,(n\geq r)
重複順列
\, _n\prod_r = \,n^r

円順列
\frac{(n-r)!}{2}\,(n\geq 3)

情報

Wikipedia

C++コード

/**
* 順列:異なるn個のものから、任意にr個とって1列に並べた順列の数
* @param [in] n 要素数
* @param [in] r n個からr個とる数
* @return 順列の数
*/
template<typename IntType>
IntType nPr(IntType n, IntType r)
{
    if ( n < r ) return 0;
    else if ( r == 0 ) return 1;
    else if ( r == 1 ) return n;

    IntType i, result = 1;

    for ( i = n; i > n - r; --i ) result *= i;

    return result;
}

オンライン実行

コメント 

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください