【深度优先搜索】计蒜客:蓝跳跳
深度优先搜索+记忆化搜索:
int dfs(len,flag):以及跳出的长度和上一次跳的距离是否大于p
if(len==0)return 0;
if(len==l)return1;
res=0;
if(flag==0)//上一步跳的距离小于p,那么这一次跳的距离为1~k
{
for(i:1~p-1)res+=dfs(len+i,0);
for(i:p~k)res+=dfs(len+i,1);
}else{
for(i:1~p-1)res+=dfs(len+i,0);
}
return res;
代码:
#include
using namespace std;
int k;
int p;
int l;
int dfs(long long len,int flag){
if(len>l)return 0;
if(len==l)return 1;
int res=0;
if(flag==0){
for(int i=1;i
共有 0 条评论