算法-排列组合
sparksnail
这个作者很懒,什么都没留下…
展开
-
nowcoder 方格移动
题目在XxY的方格中,以左上角格子为起点,右下角格子为终点,每次只能向下走或者向右走,请问一共有多少种不同的走法 给定两个正整数int x,int y,请返回走法数目。保证x+y小于等于12。 测试样例: 2,2 返回:2思路共有x+y-2步,有Cx+y−2x−1'>Cx−1x+y−2Cx+y−2x−1C_{x+y-2}^{x-1}种走法。代码原创 2018-01-31 21:11:57 · 233 阅读 · 0 评论 -
nowcoder 高矮排列
题目12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种? 给定一个偶数n,请返回所求的排列方式个数。保证结果在int范围内。 测试样例: 1 返回:1思路卡特兰数。代码class HighAndShort: def get_arrange(self, n, num): count = 1原创 2018-02-01 22:56:18 · 265 阅读 · 0 评论 -
nowcoder 二叉树统计
题目求n个无差别的节点构成的二叉树有多少种不同的结构? 给定一个整数n,请返回不同结构的二叉树的个数。保证结果在int范围内。 测试样例: 1 返回:1思路卡特兰数,h(n)=h(0)∗h(n−1)+h(1)∗h(n−2)+...+h(n−1)h(0)'>h(n)=h(0)∗h(n−1)+h(1)∗h(n−2原创 2018-02-01 22:46:18 · 153 阅读 · 0 评论 -
nowcoder 排队买票
题目2n个人排队买票,n个人拿5块钱,n个人拿10块钱,票价是5块钱1张,每个人买一张票,售票员手里没有零钱,问有多少种排队方法让售票员可以顺利卖票。 给定一个整数n,请返回所求的排队方案个数。保证结果在int范围内。 测试样例: 1 返回:1思路卡特兰数。代码class BuyTickets: def get_arrange(self, n, num):原创 2018-02-01 22:31:06 · 687 阅读 · 0 评论 -
nowcoder 进出栈
题目n个数进出栈的顺序有多少种?假设栈的容量无限大。 给定一个整数n,请返回所求的进出栈顺序个数。保证结果在int范围内。 测试样例: 1 返回:1思路卡特兰数。代码class Stack: def get_arrange(self, n, num): count = 1 num1, num2 = 1, 1 w原创 2018-02-01 22:27:38 · 168 阅读 · 0 评论 -
nowcoder 括号序列
题目假设有n对左右括号,请求出合法的排列有多少个?合法是指每一个括号都可以找到与之配对的括号,比如n=1时,()是合法的,但是)(为不合法。 给定一个整数n,请返回所求的合法排列数。保证结果在int范围内。 测试样例: 1 返回:1思路卡特兰数,C2nnn+1'>Cn2nn+1C2nnn+1\frac{C_{2n}^{n}}{n+1}。代码class Parenth原创 2018-02-01 22:25:02 · 399 阅读 · 0 评论 -
卡特兰数
卡特兰数是一种经典的数列,其前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 3430596原创 2018-02-01 22:17:47 · 199 阅读 · 0 评论 -
nowcoder 分糖果
题目n颗相同的糖果,分给m个人,每人至少一颗,问有多少种分法。 给定n和m,请返回方案数,保证n小于等于12,且m小于等于n。 测试样例: 10,3 返回:36思路Cn−1m−1'>Cm−1n−1Cn−1m−1C_{n-1}^{m-1}代码class Distribution: def get_fact(self, n, num)原创 2018-01-31 22:05:31 · 319 阅读 · 0 评论 -
nowcoder 孤傲的A
题目A(A也是他的编号)是一个孤傲的人,在一个n个人(其中编号依次为1到n)的队列中,他于其中的标号为b和标号c的人都有矛盾,所以他不会和他们站在相邻的位置。现在问你满足A的要求的对列有多少种? 给定人数n和三个人的标号A,b和c,请返回所求答案,保证人数小于等于11且大于等于3。 测试样例: 6,1,2,3 288思路n!−4(n−1)!+2(n&原创 2018-01-31 21:47:42 · 201 阅读 · 0 评论 -
nowcoder 站队问题
题目n个人站队,他们的编号依次从1到n,要求编号为a的人必须在编号为b的人的左边,但不要求一定相邻,请问共有多少种排法?第二问如果要求a必须在b的左边,并且一定要相邻,请问一共有多少种排法? 给定人数n及两个人的编号a和b,请返回一个两个元素的数组,其中两个元素依次为两个问题的答案。保证人数小于等于10。 测试样例: 7,1,2 返回:[2520,720]思路a在b的左边和...原创 2018-01-31 21:26:32 · 238 阅读 · 0 评论 -
nowcoder 错装信封
题目有n个信封,包含n封信,现在把信拿出来,再装回去,要求每封信不能装回它原来的信封,问有多少种装法? 给定一个整数n,请返回装发个数,为了防止溢出,请返回结果Mod 1000000007的值。保证n的大小小于等于300。 测试样例: 2 返回:1思路f(n)=(n−1)∗(f(n−1)+f(n−2))'>f(n)=(n−原创 2018-02-01 23:28:50 · 249 阅读 · 0 评论