【問題描述】
小明想知道,滿足以下條件的正整數序列的數量:
1. 第一項為 n;
2. 第二項不超過 n;
3. 從第三項開始,每一項小於前兩項的差的絕對值。
請計算,對於給定的 n,有多少種滿足條件的序列。
【輸入格式】
輸入一行包含乙個整數 n。
【輸出格式】
輸出乙個整數,表示答案。答案可能很大,請輸出答案除以10000的餘數。
【樣例輸入】
4【樣例輸出】
7【樣例說明】
以下是滿足條件的序列:
4 14 1 1
4 1 2
4 24 2 1
4 34 4
【評測用例規模與約定】
對於 20% 的評測用例,1 <= n <= 5;
對於 50% 的評測用例,1 <= n <= 10;
對於 80% 的評測用例,1 <= n <= 100;
對於所有評測用例,1 <= n <= 1000。
思路:記憶化遞迴
從題目第三點可以得出遞迴公式:
f(old,now)的意思是一old為之前的元素,now為當前的元素的序列總和。
f(old,now) = f(now, 1) + .... + f(now,|old-now|-1) + 1;
由此我們根據2,3條件得出:f(old,now)的序列總和 = 1 + f( old, now -1 ) + f( now, | old - now | - 1 );
由此得出**(c):
#include #includeint hx[1001][1001] = ;
long
long
int dfs( int old, int
now )
intmain()
//從第三項開始,符合遞迴式:
//f(old,now) = f(now, 1) + .... + f(now,|old-now|-1) + 1;
//★從1到old和now的絕對值-1 在加上自己
2020-03-25-20:57:01
題記 序列計數 藍橋杯
小明想知道,滿足以下條件的正整數序列的數量 第一項為 n 第二項不超過 n 從第三項開始,每一項小於前兩項的差的絕對值。請計算,對於給定的 n,有多少種滿足條件的序列。輸入格式 輸入一行包含乙個整數 n。輸出格式 輸出乙個整數,表示答案。答案可能很大,請輸出答案除以10000的餘數。樣例輸入 4 樣...
藍橋杯 序列計數 記憶化搜尋
問題描述 小明想知道,滿足以下條件的正整數序列的數量 1.第一項為 n 2.第二項不超過 n 3.從第三項開始,每一項小於前兩項的差的絕對值。請計算,對於給定的 n,有多少種滿足條件的序列。輸入格式 輸入一行包含乙個整數 n。輸出格式 輸出乙個整數,表示答案。答案可能很大,請輸出答案除以10000的...
藍橋 序列計數
問題描述 小明想知道,滿足以下條件的正整數序列的數量 1.第一項為 n 2.第二項不超過 n 3.從第三項開始,每一項小於前兩項的差的絕對值。請計算,對於給定的 n,有多少種滿足條件的序列。輸入格式 輸入一行包含乙個整數 n。輸出格式 輸出乙個整數,表示答案。答案可能很大,請輸出答案除以10000的...