排列组合问题1

    xiaoxiao2021-03-26  5

    在XxY的方格中,以左上角格子为起点,右下角格子为终点,每次只能向下走或者向右走,请问一共有多少种不同的走法

    给定两个正整数int x,int y,请返回走法数目。保证x+y小于等于12。

    测试样例: 2,2 返回:2

    Cx1x+y2

    class Robot { public: int countWays(int x, int y) { if(x+y<=2) return 0; int A=1; for(int i=x+y-2;i>=y;--i) A*=i; for(int i=x-1;i>=1;--i) A/=i; return A; } };

    n个人站队,他们的编号依次从1到n,要求编号为a的人必须在编号为b的人的左边,但不要求一定相邻,请问共有多少种排法?第二问如果要求a必须在b的左边,并且一定要相邻,请问一共有多少种排法?

    给定人数n及两个人的编号a和b,请返回一个两个元素的数组,其中两个元素依次为两个问题的答案。保证人数小于等于10。

    测试样例: 7,1,2 返回:[2520,720]

    一共有n!中站法,a在b左边和不在左边各站一半; 若必须站一起,则考虑将a,b看成一个整体即可;

    class StandInLine { public: vector<int> getWays(int n, int a, int b) { vector<int> res; int sum=1; for(int i=1;i<=n;++i) sum*=i; res.push_back(sum/2); res.push_back(sum/n); return res; } };
    转载请注明原文地址: https://ju.6miu.com/read-500351.html

    最新回复(0)