当前位置:编程学习 > C/C++ >>

POJ 1306 Combinations

很简单啦,我记得有一个公式但不知道具体了,自己推导了一下C(n,m)=C(n-1,m-1)+C(n-1,m)。打表就好了。

代码:


[cpp] 
#include<iostream> 
#include<string.h> 
using namespace std; 
__int64 dp[101][101]; 
int main() 

   
   memset(dp,0,sizeof(dp)); 
   for(int i=1;i<=100;i++) 
    for(int j=1;j<=i;j++){ 
         if(i==j) dp[i][j]=1; 
         else if(j==1) dp[i][j]=i; 
         else 
           dp[i][j]=dp[i-1][j]+dp[i-1][j-1]; 
    } 
    int n,m;      
    while( cin>>n>>m){ 
          if(n==0&&m==0) break; 
           cout<<n<<" things taken "<<m<<" at a time is "<<dp[n][m]<<" exactly."<<endl; 
    } 
    return 0; 


 

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,