hdu1521排列组合

来源:互联网 发布:无标度网络特性 编辑:程序博客网 时间:2024/05/17 08:09

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1521


中文题,题目意思不用多说,由于题目给的n和m最大只有10,且最终结果不会超过int范围,so。。。。直接暴力求解。


#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define ll long longll sum;int n,m;int num[15];int A(int n,int m){    ll s=1;    for(int i=0;i<m;i++)        s=s*(n-i);    return s;}int Dfs(int k,int d){    //cout<<k<<" "<<d<<endl;    if(d==0)        return A(m,m);    //cout<<1111<<endl;    if(k>n)        return 0;    int s=0;    for(int i=0;i<=num[k]&&i<=d;i++)    {        s=s+Dfs(k+1,d-i)/A(i,i);    }    return s;}int main(){    while(~scanf("%d%d",&n,&m))    {        for(int i=1;i<=n;i++)            scanf("%d",&num[i]);        printf("%d\n",Dfs(1,m));    }    return 0;}


0 0
原创粉丝点击