ACM UVA-369

組合數+dp

void combi(unsigned long **);
int main()

{
    unsigned long **table;
    table=new unsigned long*[101];   //0到100 
    for(int i=0;i<101;i++)
    {
    table[i]=new unsigned long [i+2];  //0到i+1 
    table[i][i+1]=0;
    table[i][i]=1;
    table[i][0]=1;
    }


    combi(table);

    int n,m;

    while(scanf("%d %d",&n,&m))

    {
         if(n==0 &&m==0)
         break;
         else
         printf("%d things taken %d at a time is %u exactly.\n",n,m,table[n][m]);
    }
    //system("pause"); 
    return 0;
}
void combi(unsigned long ** table)

{

         for(int m=1;m<=100;m++)
         for(int n=m+1;n<=100;n++)
         table[n][m]=table[n-1][m]+table[n-1][m-1];  //n>=1;m>=1

}