满足条件的序列
小明想知道,满足以下条件的正整数序列的数量:
1. 第一项为 n;
2. 第二项不超过 n;
3. 从第三项开始,每一项小于前两项的差的绝对值。
请计算,对于给定的 n,有多少种满足条件的序列。
记忆化搜索
设置dp[i][j],其中 i 表示相对前一项,j 表示相对后一项,存储值表示该情况下满足条件的序列个数,由题意得
dp[i][j] = all(dp[j][0] + dp[j][1] + … + dp[j][dat-1]),其中 dat = | i - j |;
代码
#include<iostream>//by-dxy
#include<string.h>
using namespace std;
int dp[1005][1005];//i表示前一个,j表示后一个
int n;
const int mod = 10000;
int dfs(int i,int j)
{