ccf 有趣的數 DP

2021-07-22 14:31:57 字數 951 閱讀 4547

問題描述

我們把乙個數稱為有趣的,當且僅當:

1. 它的數字只包含0, 1, 2, 3,且這四個數字都出現過至少一次。

2. 所有的0都出現在所有的1之前,而所有的2都出現在所有的3之前。

3. 最高位數字不為0。

因此,符合我們定義的最小的有趣的數是2013。除此以外,4位的有趣的數還有兩個:2031和2301。

請計算恰好有n位的有趣的數的個數。由於答案可能非常大,只需要輸出答案除以1000000007的餘數。

輸入格式

輸入只有一行,包括恰好乙個正整數n (4 ≤ n ≤ 1000)。

輸出格式

輸出只有一行,包括恰好n 位的整數中有趣的數的個數除以1000000007的餘數。

樣例輸入

4樣例輸出

3思路:我們通過規則可以發現,任意乙個符合要求的數的首位只能是2。那麼按照規則我們可以得出6種狀態:

1  只含有 2

2  只含有 2   0

3  只含有 2   3 

4  只含有 2   0   1

5  只含有 2   0   3 

6  含有全部四中數

dp [ i ] [ j ] 表示乙個 i 位數滿足第 j 中狀態。那麼這一狀態一定可以由第 i - 1 位數的每一狀態得出。

#include#include#includeusing namespace std;

#define ll long long

const int mod=1000000007;

__int64 dp[1005][7]=;

int main()

if(i>=3)

if(i>=4)

}scanf("%d",&n);

printf("%i64d\n",dp[n][6]);

return 0;

}

CCF 有趣的數 DP

問題描述 我們把乙個數稱為有趣的,當且僅當 1.它的數字只包含0,1,2,3,且這四個數字都出現過至少一次。2.所有的0都出現在所有的1之前,而所有的2都出現在所有的3之前。3.最高位數字不為0。因此,符合我們定義的最小的有趣的數是2013。除此以外,4位的有趣的數還有兩個 2031和2301。請計...

CCF習題 201312 4 有趣的數 (DP)

題意不說了,中文的題意!思路 dp思想!可以這麼想,設計乙個二維的dp i j i表示當前填第i個數,此時為第j 個狀態!第一維不用說,說說第二維!總共有四個數0,1,2,3,那麼當前該填i個數時,此時已經填了一些數,還剩下沒填的數,這個填了的數的集合就是狀態!0,1,2,3的四個數總共子集有0,1...

ccf 有趣的數

問題描述 我們把乙個數稱為有趣的,當且僅當 1.它的數字只包含0,1,2,3,且這四個數字都出現過至少一次。2.所有的0都出現在所有的1之前,而所有的2都出現在所有的3之前。3.最高位數字不為0。因此,符合我們定義的最小的有趣的數是2013。除此以外,4位的有趣的數還有兩個 2031和2301。請計...