1. 程式人生 > >計算組合數 (sdut oj)

計算組合數 (sdut oj)

計算組合數

Time Limit: 1000MS Memory Limit: 32768KB

Problem Description

計算組合數。C(n,m),表示從n個數中選擇m個的組合數。
計算公式如下:
若:m=0,C(n,m)=1
否則, 若 n=1,C(n,m)=1
             否則,若m=n,C(n,m)=1
                         否則 C(n,m) = C(n-1,m-1) + C(n-1,m).

Input

第一行是正整數N,表示有N組要求的組合數。接下來N行,每行兩個整數n,m (0 <= m <= n <= 20)。

Output

輸出N行。每行輸出一個整數表示C(n,m)。

Example Input

3
2 1
3 2
4 0

Example Output

2
3
1

Hint

Author

參考程式碼

#include<stdio.h>
int f(int n,int m)
{
    int y;
    if(m == 0)
    {
        y = 1;
    }
    else
    {
        if(n == 1)
        {
            y = 1;
        }
        else
        {
            if(m == n)
            {
                y = 1;
            }
            else
            {
                y = f(n - 1, m - 1) + f(n - 1, m);
            }
        }
    }
    return y;
}
int main()
{
    int t;
    int n,m;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&n,&m);
        printf("%d\n",f(n,m));
    }
    return 0;
}


相關推薦

計算合數 (sdut oj)

計算組合數 Time Limit: 1000MS Memory Limit: 32768KB Problem Description 計算組合數。C(n,m),表示從n個數中選擇m個的組合

計算合數 oj

計算組合數 Time Limit: 1000 ms Memory Limit: 32768 KiB Problem Description 計算組合數。C(n,m),表示從n個數中選擇m個的組合數

遞歸(計算合數、判斷回文字符串、漢諾塔問題)

文字 bigint 是否 rar blog rgs port 所有 相等 一.使用組合數公式利用n!來計算 1.設計思想 先輸入整數n和k,分別用計算n!的遞歸的方法算出n!,k!和(n-k)!的結果,再計算n!/(k!(n-k)!!。用大數類BigInte

使用計算機計算合數+漢諾塔+判斷回文

span http 問題 out pan line length ssa arr 使用計算機計算組合數 一、實驗設計思想: 定義類A來存放遞推求階乘的方法,類B存放利用楊輝三角求cnk的方法,類C存放遞歸求階乘的方法,A中即1*2*3.。。。較為簡單,B中先定義數組

課程作業03:用遞歸方法計算合數、解決漢諾塔問題、判斷某個字符串是否回文

java class ply math alt static multi 構造 strong 課後作業1:使用計算機計算組合數 (1)使用組合數公式利用n!來計算 程序設計思想: 設計並調用大數求階乘的方法結合組合數公式計算組合數的值。 程序流程圖: 程序源代碼

運用對數函數<計算合數>

class () color 整理 turn 組合 blog amp gpo 先貼上一張組合數的基本公式吧,在這裏我們暫且規定n為下標,m為上標(n≥m) C(n,m) = n! / [ m!(n-m)! ] 以下思路借鑒於某位大神,為了方便自己理解,我稍微做了些整理。

計算合數

代碼 如果 mat sca class return erro blog 原理 #include <stdio.h> #include <math.h> // 請先獨立完成,如果有困難可以翻閱本書代碼倉庫中的答案,但一定要再次獨立完成。 // “抓住

Binomial Showdown(計算合數) POJ

題目:In how many ways can you choose k elements out of n elements, not taking order into account? Write a program to compute this number.Inp

計算合數的演算法

概率論是統計分析的基礎,而統計分析在很多領域比如人工智慧,生物資訊學中作為理論基礎,具有廣泛的應用場景。組合數在概率論中常用,本文就對組合數的數值計算給出一個C++求解的演算法。通過實現該演算法,對數值計算上的某些方法加深的認識。 首先,來看一下組合數的公式:

遞迴遞推之計算合數

題目大概: 按題目給出的公式求組合數。 思路: 用遞迴函式,遞迴求解組合數。 感想: 一般有公式的題大部分要用遞迴。 程式碼: #include <iostream>using names

計算合數的遞迴演算法

#include#include#define max 100int combinat(int m,int n){    int i,j;    int C[max][max];    if(n==0||n==m)        return 1;    else    { 

演算法競賽4-1 計算合數

編寫函式,引數是兩個非負整數n和m,返回組合數 Cmn=n!m!(n−m)!Cnm=n!m!(n−m)! ,其中,m<=n<=25。例如,n=25,m=12時答案為5200300。

C語言程式訓練-1586-計算合數

Problem Description 計算組合數。C(n,m),表示從n個數中選擇m個的組合數。 計算公式如下: 若:m=0,C(n,m)=1 否則, 若 n=1,C(n,m)=1 否則,若m=n,C(n,m)=1 否則 C(n,m) = C(n-1,m-1)

CCF NOI1063 計算合數

時間限制: 1000 ms  空間限制: 262144 KB 題目描述   給出兩個非負整數n和m,編寫程式計算組合數C(n,m)的值。 輸入 一行兩個空格隔開的非負整數n,m。 輸出 輸出一個數表示C(n,m)。 樣例輸入 5 2樣例輸出 10 資料範圍限制  

打表計算合數

clas code () init 組合 pan void ini div 打表,C(n,m)=C(n-1,m-1)+C(n-1,m) n<=10000 const int maxn=100; void init(){ int i,j; f

合數計算

turn fzu clu for 組合數 題意 pri ++ 問題 - -首先謝大佬 http://blog.csdn.net/acdreamers/article/details/8037918 引用一段方便自己以後查閱 組合數取模就是求的值; (2)和,並且是素數

一道合數行列式的計算

成對 span dot ots class AS 依次 end right 一道行列式計算 2018.04.10 \[ \det A=\left| \begin{matrix} 1& 1& \cdots& 1\

計算一個N個選項中和為X的所有合數

 下面就是一個最近微信上流傳的一個測試: 假如5塊錢可以買一個女朋友,你會買什麼樣的?下面是每項的價格 有錢-4元, 長得好看-3元, 會做飯-3元, 忠誠-3元, 處女-2元, 溫柔-2元, 活潑可愛-2元, 大長腿-1元, 聰明-1元, 胸大-1元 --計算從

51nod 1362 搬箱子——[ 推式子+合數計算方法 ] [ 拉格朗日插值 ]

題目:http://www.51nod.com/Challenge/Problem.html#!#problemId=1362 方法一:   設 a 是向下走的步數、 b 是向右下走的步數、 c 是向下走的步數。如果是走到第 j 列的方案數的話,有:   \( a+b = n \)    \( b+c