題目描述:
我們把乙個數稱為有趣的,當且僅當:
1. 它的數字只包含0, 1, 2, 3,且這四個數字都出現過至少一次。
2. 所有的0都出現在所有的1之前,而所有的2都出現在所有的3之前。
3. 最高位數字不為0。
因此,符合我們定義的最小的有趣的數是2013。除此以外,4位的有趣的數還有兩個:2031和2301。
請計算恰好有n位的有趣的數的個數。由於答案可能非常大,只需要輸出答案除以1000000007的餘數。
解題思路:ccf的測試資料恐怖到極致,以至於我見了這道題根本沒有任何暴力的想法,我知道n位數與n-1位數絕對存在著某種關係~果然!
我們假設dp[i][j]表示填到第i位數時處於第j個狀態。
那麼共有六種合法狀態,括號表示重複出現的數字
0--01(2)3
1--(0)1(2)3
2--01(2)(3)
3--(0)(1)(2)3
4--(0)1(2)(3)
5--(0)(1)(2)(3)
那麼這個問題就很明顯了,任何n一種狀態,都是由滿足條件的幾個n-1狀態組成的
哦對了,注意每次都要取餘~
#include/*
dp[i][j]表示填到第i位數時處於第j個狀態。
共有六種合法狀態,括號表示重複出現的數字
0--01(2)3
1--(0)1(2)3
2--01(2)(3)
3--(0)(1)(2)3
4--(0)1(2)(3)
5--(0)(1)(2)(3)
*/ int main()
printf("%i64d\n",dp[n][5]);
}return 0;
}
ccf試題有趣的數,動態規劃
關鍵 將二維陣列看作二維函式,由前面的遞推到後面 思路 之前嘗試用深度搜尋,乙個個位置試探,可是本人只能求出乙個最小的有趣數,而無法統計數量,後看到一些部落格,大多亂七八糟,敘述不明,有一篇倒是解釋的非常清楚,博主連線 問題描述 我們把乙個數稱為有趣的,當且僅當 1.它的數字只包含0,1,2,3,且...
ccf 有趣的數
問題描述 我們把乙個數稱為有趣的,當且僅當 1.它的數字只包含0,1,2,3,且這四個數字都出現過至少一次。2.所有的0都出現在所有的1之前,而所有的2都出現在所有的3之前。3.最高位數字不為0。因此,符合我們定義的最小的有趣的數是2013。除此以外,4位的有趣的數還有兩個 2031和2301。請計...
ccf有趣的數
有趣的數 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 我們把乙個數稱為有趣的,當且僅當 1.它的數字只包含0,1,2,3,且這四個數字都出現過至少一次。2.所有的0都出現在所有的1之前,而所有的2都出現在所有的3之前。3.最高位數字不為0。因此,符合我們定義的最小的有趣的數是...