#include<bits/stdc++.h>
using namespace std;
#define int long long
const int MOD=1e9+7;
int n,a,b;
bool f[100006];
int dp[100006];
void dfs(int a){
f[a]=1;
dp[a]=(dp[a]+1+MOD)%MOD;
if(a!=b) {
if(a+1<=n && !f[a+1]){
dfs(a+1);
}
if(a+2<=n && !f[a+2]){
dfs(a+2);
}
if(a-2>=0 && !f[a-2]){
dfs(a-2);
}
if(a-1>=0 && !f[a-1]){
dfs(a-1);
}
}
f[a]=0;
}
signed main(){
// fropen("cow.in","r",stdin);
// fropen("cow.out","w",stdout);
cin>>n>>a>>b;
dfs(a);
for(int i=0;i<=n;i++) cout<<dp[i]<<' ';
return 0;
}
题目: 小C在刻度a的位置,牛在刻度b的位置。每次小C可以往左或者或者往右跳,每次可以跳一个刻度或者两个刻度,但 不能跳到一个跳过了的位置,一但跳到了牛的位置小C会立刻停止。\
范围:对于100%的数据,1≤n≤106,0≤a,b≤n,a≠b. 其中: 对于10%的数据,保证n≤10,a=0,b=n。 对于20%的数据,保证a=0且b=n。 对于30%的数据,保证n≤20。
分别输入:n,a,b
某位蒟蒻写的暴力深搜代码,很明显,超时所以希望各位大佬帮帮这个蒟蒻帮他写记忆化吧!绝对不是我