首页 > 其他 > 详细

排列组合的一些练习

时间:2019-08-01 22:44:32      阅读:90      评论:0      收藏:0      [点我收藏+]

技术分享图片

技术分享图片

#define Mod 1000000007
class CombineByMistake {
public:
    int countWays(int n)
    {
        if(n==0||n==1)
            return 0;
        if(n==2)
            return 1;
        int pre=0,last=1,temp=0;
        for(int i=3,temp=0;i<=n;i++)
        {
            temp=(long long)(i-1)*(long long)(last+pre)%Mod;
            pre=last;
            last=temp;
        }
        return last;
    }
};

 技术分享图片

class TreeCount 
{
public:
    int countWays(int n) 
    {
        return zuhe(2*n,n)/(n+1);
    }
    int zuhe(int m,int n)
        //n<=m
    {
        int A=1,B=1,i=0;
        while(i<n)
        {
            A*=(m-i);
            i++;
        }
        while(n)
        {
            B*=n--;
        }
        return (A/B);
    }
};

技术分享图片

using namespace std;
class Robot {
public:
    int countWays(int x, int y) 
    {
        return zuhe(x+y-2,x-1);

    }
    int zuhe(int m,int n)
    {
        int A=1,B=1,i=0;
        while(i<n)
        {
            A*=(m-i);
            i++;
        }
        while(n)
        {
            B*=n--;
        }
        return (A/B);

    }
};

技术分享图片

技术分享图片

//看做这几个糖果中放隔板,几天吃完放几个隔板
class Distribution {
public:
    int getWays(int n, int m) 
    {
        return zuhe(n-1,m-1);
    }
    int zuhe(int m,int n)
    //n<=m
    {
        int A=1,B=1,i=0;
        while(i<n)
        {
            A*=(m-i);
            i++;
        }
        while(n)
        {
            B*=n--;
        }
        return (A/B);
    }
};

技术分享图片

技术分享图片

class HighAndShort 
{
public:
    int countWays(int n) 
    {
        return zuhe(n,n/2)/(n/2+1);
    }
    int zuhe(int m,int n)
        //n<=m
    {
        int A=1,B=1,i=0;
        while(i<n)
        {
            A*=(m-i);
            i++;
        }
        while(n)
        {
            B*=n--;
        }
        return (A/B);
    }
};

技术分享图片

class LonelyA {
public:
    int getWays(int n, int A, int b, int c)
    {
        int s1=pailie(n),s2=pailie(n-1),s3=pailie(n-2);
        return (s1-4*s2+2*s3);

    }
    int pailie(int m)
    {
        int res=1;
        while(m)
        {
            res*=m;
            m--;
        }
        return res;
    }
};

技术分享图片

class LonelyA {
public:
    int getWays(int n, int A, int b, int c)
    {
        int s1=pailie(n),s2=pailie(n-1),s3=pailie(n-2);
        return (s1-4*s2+2*s3);

    }
    int pailie(int m)
    {
        int res=1;
        while(m)
        {
            res*=m;
            m--;
        }
        return res;
    }
};

技术分享图片

class Stack {
public:
    int countWays(int n) 
    {
        return zuhe(2*n,n)/(n+1);
    }
    int zuhe(int m,int n)
        //n<=m
    {
        int A=1,B=1,i=0;
        while(i<n)
        {
            A*=(m-i);
            i++;
        }
        while(n)
        {
            B*=n--;
        }
        return (A/B);
    }
};

技术分享图片

class Parenthesis {
public:
    int countLegalWays(int n) 
    {
        return zuhe(2*n,n)/(n+1);
    }
    int zuhe(int m,int n)
        //n<=m
    {
        int A=1,B=1,i=0;
        while(i<n)
        {
            A*=(m-i);
            i++;
        }
        while(n)
        {
            B*=n--;
        }
        return (A/B);
    }
};

技术分享图片

class BuyTickets {
public:
    int countWays(int n) 
    {
        return zuhe(2*n,n)/(n+1);
    }
    int zuhe(int m,int n)
        //n<=m
    {
        int A=1,B=1,i=0;
        while(i<n)
        {
            A*=(m-i);
            i++;
        }
        while(n)
        {
            B*=n--;
        }
        return (A/B);
    }
};

技术分享图片

class StandInLine {
public:
    vector<int> getWays(int n, int a, int b) 
    {
        vector<int> res;
        res.push_back(pailie(n)/2);
        res.push_back(pailie(n-1));
        return res;

    }
    int pailie(int m)
    {
        int res=1;
        while(m)
        {
            res*=m;
            m--;
        }
        return res;
    }
};

技术分享图片技术分享图片

 

排列组合的一些练习

原文:https://www.cnblogs.com/tianzeng/p/11285728.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!