【問題描述】
小明想知道,滿足以下條件的正整數序列的數量:
第一項為 n;
第二項不超過 n;
從第三項開始,每一項小於前兩項的差的絕對值。
請計算,對於給定的 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(i,j)表示前乙個數是i,當前數是1到j的合法序列的個數;有f(i,j) = 1 + f(i,j-1) + f(j,abs(i-j)-1)即分為兩個部分1)i作為前乙個數,從1到j-1為當前數的合法序列的個數已經計算好,2)求以j為尾數,後面選擇1到abs(i-j)-1的合法序列的個數。如 f(10,5)=f(10,4)+f(5,4);而不是列舉1到5;這樣每次解答樹只展開兩個節點,相當於減少一層迴圈,雖然解答樹的層次還是很深,但是由於記憶的存在,解空間仍然是n的平方。可在100ms內解決。
//#include
#include
#include
#define mod 10000
using
namespace std;
int n;
int m[
1005][
1005];
intdfs
(int pre,
int cur)
void
work()
intmain()
每日一題 統計數字
難度星級 2星 主要考察 排序 字典 這是一道簡單 相對於部分語言來說 的排序的題目,先來看題 時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 某次科研調查時得到了n個自然數,每個數均不超過1500000000 ...
LeetCode 每日一題338 位元位計數
給定乙個非負整數num。對於0 i num範圍中的每個數字i,計算其二進位制數中的1的數目並將它們作為陣列返回。示例 1 輸入 2輸出 0 1,1 示例 2 輸入 5輸出 0 1,1 2,1,2 高階 要求演算法的空間複雜度為o n 你能進一步完善解法嗎?要求在c 或任何其他語言中不使用任何內建函式...
每日一題 1
題目詳情 peter喜歡玩數字遊戲,但數獨這樣的遊戲對他來說太簡單了,於是他準備玩乙個難的遊戲。遊戲規則是在乙個n n的 裡填數,規則 對於每個輸入的n,從左上角開始,總是以對角線為起點,先橫著填,再豎著填。這裡給了一些樣例,請在樣例中找到規律並把這個n n的 列印出來吧。輸入描述 多組測試資料 資...