該類問題所推得的公式通常為f(n)=f(n-a)+f(n-b)+f(n-c)。方法通常適用于排隊現(xiàn)象并且在排隊的時候有一定的限制條件。
注意:只分析正確的情況,錯誤的不分析,從最后一個數(shù)向前分析當達到某個數(shù)一定是X的時候便是結(jié)果得出的時候。
排序的要求是女生們必須一個以上的人站在一起,男生可以單個站,求n個學生的一共排隊方案。
設(shè)符合以上要求設(shè)為安全,人數(shù)增加可以在隊列的后面添加男生或女生來判斷添加后是否為安全。
計算F(n):
一:當最后一個是男孩M時候,前面n-1個隨便排出來,只要符合規(guī)則就可以,即是F(n-1);
二:當最后一個是女孩F時候,第n-1個肯定是女孩F,這時候又有兩種情況:
1)前面n-2個可以按n-2個的時候的規(guī)則來,完全可以,即是F(n-2);
2)但是即使前面n-2個人不是合法的隊列,加上兩個女生也有可能是合法的。當?shù)趎-2是女孩而n-3是男孩的情況,可能合法,情況總數(shù)為F(n-4);
綜上所述:總數(shù)F(n)=F(n-1)+F(n-2)+F(n-4);并且,F(xiàn)(0)=1,F(xiàn)(1)=1,F(xiàn)(2)=2,F(xiàn)(3)=4。
在n達到1000時,F(xiàn)(n)的大小一定會超出內(nèi)存,故需要考慮大數(shù)的解決。
同樣,使用此方法的還有之后的題目:Queuing
也是男女孩排隊,不過不能出現(xiàn)fff,fmf的子序列。
可以假設(shè)前n-1項都是符合要求的,那么前兩項可能為:1、ff 2、mm 3、fm 4、mf
1、最后一項是m則方法都適用,為f(n-1)。
2、最后一項是f,那么只能為2、4。而1、3情況是不安全的。
一、第2種情況,第n-3項的選擇是不受打擾的,即只要前n-3項安全,加上mm后也是安全的,故有f(n-3)種情況。
二、第4種情況,若加上mf后仍舊安全,第m-3項必須為m,而在安全的隊伍后加上mmf仍舊是安全的,故方案有f(n-4)。
所有情況分析完畢,得出公式:f(n)=f(n-1)+f(n-3)+f(n-4)。