速刷水题汇总
'#$())*'#+$
,'-)*
,.)/ 01
,2.1/.*)'2)'2/
310242' /
)56'7)8
9999099909990990990990
.9727' /'74:
$/ 8*2:'741
);
<
3*
*)*'' =9/3))0
2'7)>5>5
<
*
9))0 2'74:
/
<
*3*
#
<
**
6
题目大意:
一个队伍中有 n 个学生,但规定女生不能单独站,也就是说,要么队伍中没有女生,要么有两个或两
个以上的女生站在一起(这是袒护弱势力的体现!)。问有多少这样的队伍。
我的思路:
设 n 个学生生按规则排的队列有 f(n)种,那么当总数少一个时会是什么况呢?显然,要么少一个男的,
要么少一个女的。故有如下况:
(1) 少一个男的,也就是说,第 n 个加进去的是男生。此时,队列 n-1 只需按原规则站好即可,故
有 f(n-1)种方。
(2) 少一个女的,也就是说,第 n 个加进去的是女生。此时,前面的肯定不能是男生,因为后面加进
去的女生只有一个,不符合规则,因此第 n-1 个(也就是前 1 个)必需是女生。若 n-2 个是按规则站好的,
则有 f(n-2)种方法;若 n-2 个不是按规则站好的(因为第 n-1 个,第 n 个是女生,所以第 n-2 个可以是女生,
第 n-3 个可以是男生。当没加进第 n-1 和第 n 个女生的时候,这是不合规则的),即第 n-2 个是女生,第
n-3 个是男生,此后第 n-4 个必需按规则站好,故有 f(n-4)种方法。
于是得递推公式:
f(n)=f(n-1)+f(n-2)+f(n-4);
下一步就要确定初始条件:
由于递推公式有 f(n-1)、f(n-2)和 f(n-4),故必需给出 f(1)、f(2) 、f(3)和 f(4)
由题意得:f(1)=1;f(2) =2;f(3)=4; f(4)=7。
注意:由于本题数据量较量大,必需要用高精度,同时用数组留存结果来代替递归。
"#
$
%
,1 / ,12