代码悬棺
  • 板块灌水区
  • 楼主see_htdls
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/10/20 16:35
  • 上次更新2024/10/20 18:43:38
查看原帖
代码悬棺
716862
see_htdls楼主2024/10/20 16:35
#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
某位蒟蒻写的暴力深搜代码,很明显,超时所以希望各位大佬帮帮这个蒟蒻帮他写记忆化吧!绝对不是我

2024/10/20 16:35
加载中...