zoukankan      html  css  js  c++  java
  • 小球和箱子

    /*
    将n个不同的球放入m个不同的盒子的方案数
    m^n 
    */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int n,m,a[1010],l;
    int main()
    {
        scanf("%d%d",&n,&m);
        int k=m;
        while(k)
          {
              a[++l]=k%10;
              k=k/10;
          }
        for(int i=2;i<=n;i++)
          {
              for(int j=1;j<=l;j++)a[j]=a[j]*m;
              for(int j=1;j<=l;j++)
                if(a[j]>9)
                  {
                    a[j+1]+=a[j]/10;
                    a[j]=a[j]%10;
                }
            if(a[l+1])l++;
          }
        for(int i=l;i>=1;i--)
          printf("%d",a[i]);
        return 0;
    }
    /*
    将n个相同的球放入m个不同的盒子的方案数
    x1+x2+...+xm=n
    都加1 x1+x2+...+xm+m=n+m 每个解不为0 
    直接隔板法 C(m-1,m+n-1) 
    */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int n,m;
    int main()
    {
        scanf("%d%d",&n,&m);
        int p=m-1;
        int q=m+n-1;
        int sum=1,div=1;
        for(int i=q;i>=q-p+1;i--)
          sum*=i;
        for(int i=1;i<=p;i++)
          div*=i;
        printf("%d
    ",sum/div);
        return 0;
    }
    /*
    将n个相同的球放入m个相同的盒子的方案数
    f[i][j]=f[i][j-i]+f[i-1][j];
    */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int T,n,m,f[100][100];
    int Dfs(int k,int p)
    {
        if(k==0||p==1)return 1;
        if(f[k][p])return f[k][p];
        if(p>k)return Dfs(k,k);
        return Dfs(k,p-1)+Dfs(k-p,p);
    }
    int main()
    {
        scanf("%d",&T);
        while(T--)
          {
              memset(f,0,sizeof(f));
              scanf("%d%d",&n,&m);
            printf("%d
    ",Dfs(n,m));
          }
        return 0;
    }
    /*
    将n个不同的球放入m个相同箱子里的方案数 
    F[i][j]=f[i-1][j-1]+f[i-1][j]*j;
    */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int n,m,f[100][100];
    int main()
    {
        scanf("%d%d",&n,&m);
        f[0][0]=1;
        for(int i=1;i<=n;i++)
          for(int j=1;j<=i&&j<=m;j++)
            f[i][j]=f[i-1][j-1]+f[i-1][j]*j;
        printf("%d
    ",f[n][m]);
        return 0;
    }
  • 相关阅读:
    VUE注意
    https://www.ituring.com.cn/article/211352虚拟DOM
    web.xml中关于Servlet、Filter、Listener的配置
    Eclipse中web项目部署至Tomcat步骤
    BAE百度云平台的mysql数据库的施用(Java)
    MySQL存储过程
    python列表插入--append(), extend(), insert()
    range()函数
    c++拷贝构造函数引用传参
    我居然要写这周的周报???
  • 原文地址:https://www.cnblogs.com/yanlifneg/p/5514934.html
Copyright © 2011-2022 走看看