摘要:
题目大意: n条折线分割平面的个数。解题思路: 我们先来看一下N条相交的直线最多能把平面分割成几块。 很明显,当添加第n条直线时,为了使平面最多,则第n条直线要与前面n-1条直线都相交,切没有任何三条线交于一个点。这样,第n条直线一共有n-1个交点。我们知道,增加n个焦点,则增加n+1个平面。所以n条直线分割平面最大数是1 + 1 + 2 + 3 + ... ... 阅读全文
摘要:
题目大意:1、 每次只能移动一格;2、 不能向后走(假设你的目的地是“向上”,那么你可以向左走,可以向右走,也可以向上走,但是不可以向下走);3、 走过的格子立即塌陷无法再走第二次;求走n步不同的方案数(2种走法只要有一步不一样,即被认为是不同的方案)。解题思路:要分两种情况来考虑,a(n)为向上,b(n)为向左跟向右,f(n)为当前方案数。a(n) = a(n-1) + b(n-1);因为... 阅读全文
摘要:
题目大意: 有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法.解题思路: WA了两次,找错了规律。 当n>3时,list[i]=list[i-1]+list[i-2]*2; 看来还是找递推规律比较靠谱。递推思路:考虑长为n的串,... 阅读全文
摘要:
题目大意: 有一个大小是 2 x n 的网格,现在需要用2种规格的骨牌铺满,骨牌规格分别是 2 x 1 和 2 x 2,请计算一共有多少种铺设的方法。解题思路: 找出递推公式: f[i] = f[i-1] + f[i-2] * 2;代码: #includeusing namespace std;const int MAX = 31;int m... 阅读全文
摘要:
题目大意: 有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?解题思路: 找出递推公式。假如当年为第n个年头,那么f[n] = f[n-1] + f[n-3].当前年等于去年的牛+3年前的牛,把去年的牛都当成不会生的,把3年前的牛都当成会生的即可。可画表:44 14 2 14 3 2 14 ... 阅读全文
摘要:
题目大意: 给你n个节点,然后求出能够组成的二叉树的个数,注意每个节点都有标号。解题思路: 卡特兰数,然后每个节点都有标号,所以最后要再对节点全排列,即n! 先预处理105以内的卡特兰数,之后再乘上n! 卡特兰数的递推公式:h(n)=h(n-1)*(4*n-2)/(n+1); h(0) = 1;代码://h(n)=h(n-1)*(4*n-2)... 阅读全文
摘要:
题目大意: 给你m个H,n个D,要求组成的字符串中,从左往右算,H的数量大于D的数量。解题思路: 典型的catalan性质,可以算出C(m+n,m)-C(m+n,m+1),化简为 h(n,m) = (m+n)! * (m+1+n) / (m+1)! / n!代码://推导的公式: h(n,m) = (m+n)! * (m+1+n) / (m+1)! / n!#incl... 阅读全文