一維的01揹包
#include #include #include #include #include #include #include #include #include #define fop freopen("in","r",stdin)
#define inf 0x3f3f3f3f
#define ll __int64
#define eps 1e-8
using namespace std;
const int n = 100010;
int dp[n];
int fib[50];
int cnt;
void init()
}void pack()
}}int main()
return 0;
}
dp[0] = 1這一步很妙,有了這一步可以簡單的初始化dp陣列所有元素為0,不用考慮兩個加數是否都是fib數
原因如下,因為列舉的是fib陣列,所以其中乙個數肯定是fib數,而另乙個數是不是fib數都無關緊要,我們只關心這個j-fib[i]拆成fib數一共有幾種表達方法
UESTC1133 菲波拉契數制 01揹包思想
description 我們定義如下數列為菲波拉契數列 f 1 1 f 2 2 f i f i 1 f i 2 i 3 給定任意乙個數,我們可以把它表示成若干互不相同的菲波拉契數之和。比如13 有三種表示法13 13 13 5 813 2 3 8 現在給你乙個數n 請輸出把它表示成若干互不相同的菲波...
dp uestc L 菲波拉契數制公升級版
資料很大,以揹包的思路陣列開不下。先定序地考慮乙個菲波拉契數如fib i 的表示法,假設i比較大,由菲波拉契數的定義可知道fib i fib i 1 fib i 2 要找到其它表示就繼續拆分fib i 1 或fib i 2 假如拆分fib i 1 得到fib i 2 fib i 2 fib i 3 ...
菲波那契數列
菲波那契數列是指這樣的數列 數列的第乙個和第二個數都為1,接下來每個數都等於前面2個數之和。給出乙個正整數k,要求菲波那契數列中第k個數是多少。1 遞迴演算法 include define m 99 int main scanf d k for i 2 i k 1 i printf d n a k ...