竞赛
考级
再仔细思考后,我们会发现:除了i等于1、2、3,其他时候如果i是奇数,那么i / 2不会产生新的数。这时候d[i] = d[i - 1]。如果i是偶数,那么i / 2会产生一个新的数,这时只需要加上d[i / 2]就可以产生新的递推数组。递推式如下: 当i为奇数时:d[i] = d[i - 1]。 当i为偶数时:d[i] = d[i - 1] + d[i / 2] 代码如下:
复仇者_THUNDER
#include <iostream> using namespace std; int main(){ int n,a[1005]={1,1}; cin>>n; for (int i=2;i<=n;i++){ if (i%2 == 0){ a[i] = a[i-1]+a[i/2]; }else{ a[i] = a[i-1]; } } }
烈火麒麟