【刷题之路】站队问题
2016-06-03 10:00
267 查看
n个人站队,他们的编号依次从1到n,要求编号为a的人必须在编号为b的人的左边,但不要求一定相邻,请问共有多少种排法?第二问如果要求a必须在b的左边,并且一定要相邻,请问一共有多少种排法?
第一问,对于n个人全排列共有n!次,其中必定有一半是a在b左边,一半是a在b右边,结果就是n!/2
第二问,a必须在B左边相邻,那么两个人就是一体的,一共有(n-1)!次
class StandInLine {
public:
vector<int> getWays(int n, int a, int b) {
// write code here
int i,p1=1,p2=1;
vector<int> res;
for(i=1;i<=n;i++){
p1*=i;
if(i<n) p2*=i;
}
res.push_back(p1/2);
res.push_back(p2);
return res;
}
};
第一问,对于n个人全排列共有n!次,其中必定有一半是a在b左边,一半是a在b右边,结果就是n!/2
第二问,a必须在B左边相邻,那么两个人就是一体的,一共有(n-1)!次
class StandInLine {
public:
vector<int> getWays(int n, int a, int b) {
// write code here
int i,p1=1,p2=1;
vector<int> res;
for(i=1;i<=n;i++){
p1*=i;
if(i<n) p2*=i;
}
res.push_back(p1/2);
res.push_back(p2);
return res;
}
};
相关文章推荐
- C#查找字符串所有排列组合的方法
- js实现简单排列组合的方法
- PICT3.3用户指南学习笔记
- 排列组合
- 变态组合数C(n,m)求解
- 算法——Reverse Integer
- hd1000
- Next Permutation-Leetcode
- 开始刷LeetCode
- Codeforces Round #341 (Div. 2) CF621B. Wet Shark and Bishops(排列组合+对角线规律)
- [BZOJ1211][HNOI2004][prufer序列][排列]树的计数
- LeetCode刷题记
- 小程序员刷题之路_1
- c++ The compile error : unresolved overloaded funciton type
- 任意数字序列“123456”之类,输出它们所有的排列组合
- 排列组合基本公式
- c# 全排列算法
- google笔试题:写出这样一个函数 ,输入一个 n, 输出从1到这个数字之间的出现的1的个数
- 组合数
- LintCode 螺旋矩阵 (新解法)