在XxY的方格中,以左上角格子为起点,右下角格子为终点,每次只能向下走或者向右走,请问一共有多少种不同的走法
给定两个正整数int x,int y,请返回走法数目。保证x+y小于等于12。
测试样例: 2,2 返回:2
Cx−1x+y−2 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; } };