洛谷P1028 數的計算 題解 動態規劃入門題

2022-05-19 23:48:11 字數 606 閱讀 4161

我們要求找出具有下列性質數的個數(包含輸入的自然數 \(n\) ):

先輸入乙個自然數 \(n(n \le 1000)\) ,然後對此自然數按照如下方法進行處理:

不作任何處理;

在它的左邊加上乙個自然數,但該自然數不能超過原數的一半;

加上數後,繼續按此規則進行處理,直到不能再加自然數為止.

1個自然數 \(n(n \le 1000)\)

1個整數,表示具有該性質數的個數。

我們可以使用動態規劃來解決這個問題。

我們令 \(f[i]\) 表示自然數 \(i\) 能夠生成的數的個數,則:

\(f[i] = 1 + \sum_^ f[j]\)

實現**如下:

#include using namespace std;

const int maxn = 1010;

int n, f[maxn];

int main()

cout << f[n] << endl;

return 0;

}

總結:這是一道動態規劃入門題,可以用遞推、遞迴做(不過遞迴做的時候不要忘了開備忘錄)。

洛谷 P1028 數的計算 題解 分析

由於洛谷的畫風超可愛qaq,我就不往過搬磚了,顯得醜,題目看原位址叭。題目鏈結在此 這是試煉場過程函式與遞迴的乙個簡單題,而我的遞推思路卻沒有能寫出來,這方面練的太少呀,我也意識到了這可是最最基礎的本領,所以還是多寫題 雖然都是很水的題 emmmm。我們以6來舉例 f 1 1 f 2 2 f 1 1...

洛谷P1028數的計算題解 zhengjun

題目描述 我們要求找出具有下列性質數的個數 包含輸入的自然數n nn 先輸入乙個自然數n nn n 1000 n le 1000 n 1000 然後對此自然數按照如下方法進行處理 不作任何處理 在它的左邊加上乙個自然數,但該自然數不能超過原數的一半 加上數後,繼續按此規則進行處理,直到不能再加自然數...

洛谷P1028 數的計算

我們要求找出具有下列性質數的個數 包含輸入的自然數n 先輸入乙個自然數n n 1000 然後對此自然數按照如下方法進行處理 1.不作任何處理 2.在它的左邊加上乙個自然數,但該自然數不能超過原數的一半 3.加上數後,繼續按此規則進行處理,直到不能再加自然數為止.輸入格式 乙個自然數n n 1000 ...