华为笔试题之一,求n和m的组合数

#include <iostream>
using namespace std;


int FC(int X, int Y)
{
    int count=1;

    if(Y == 0 || Y == X)
        return 1;

    for(int i=0; i<Y; ++i)
    {
        count *= X - i;
        count /= i + 1;
    }

    return count;
}


int main() {
    int n, m;
    cin >> n >> m;

    int res=0;


    if(n==m)
    {
        for(int i=0; i< n-1; ++i)
        {
            int x = n * FC(n-1, i);
            res += x;
        }
        res = res +1;
    }

    if(n < m)
    {
        for(int i=0; i<= n-1; ++i)
        {
            int x = n * FC(n - 1, i);
            res += x;
        }
    }

    if( n > m)
    {
        for(int i=0; i<= m-2; ++i)
        {
            int x = n * FC(n - 1, i);
            res += x;
        }

        res = res + FC(n, m);
    }


    cout << res << endl;

    return 0;
}

#华为##笔试题目#
全部评论
楼主这题通过了吗?
点赞 回复 分享
发布于 2019-09-07 22:00
我总是超时 难受
点赞 回复 分享
发布于 2019-09-07 21:05
这个题目我看了半天都不确定题义有没有理解错,感觉今天的题目都非常容易读错,哭了
点赞 回复 分享
发布于 2019-09-07 21:07
我推的公式(从n个元素中可重复的取m个元素) (m+n-1)! / (m !  (n-1) !),一直0%......
点赞 回复 分享
发布于 2019-09-07 21:20
这道题就是polya定理的一个最简单的应用,POJ里有原题。
点赞 回复 分享
发布于 2019-09-08 09:03

相关推荐

不愿透露姓名的神秘牛友
11-21 17:16
科大讯飞 算法工程师 28.0k*14.0, 百分之三十是绩效,惯例只发0.9
点赞 评论 收藏
分享
我见java多妩媚:大外包
点赞 评论 收藏
分享
点赞 19 评论
分享
牛客网
牛客企业服务