社区讨论
站外题求助,玄5关
学术版参与者 3已保存回复 9
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 9 条
- 当前快照
- 1 份
- 快照标识符
- @lznsr687
- 此快照首次捕获于
- 2024/08/10 15:10 2 年前
- 此快照最后确认于
- 2024/08/10 15:59 2 年前

这道题可以打dfs吗,为什么我的dfs代码会错,是我漏想什么吗?
求助大佬,在线等,急。
CPP#include<iostream>
#include<string>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<vector>
#include<algorithm>
#include<map>
#include<set>
#include<iomanip>
#include<cstdio>
#include<queue>
#include<stack>
#include<deque>
using namespace std;
#define int long long
const int N = 1e6+10;
const int mod = 998244353;
const int INF = 0x3f3f3f3f;
int n;
int a[N];
//bool vis[N];
int dfs(int k,int num,int sum){
if(k+a[k]>n||k+num>n)return sum;
int cnt=sum%mod;
for(int i=k+1;i<=n;i++){
if(a[i]<0)continue;
cnt+=dfs(i,((num-1>=0)?num-1:a[i]),((num-1<=0)?sum+1:0))%mod;
cnt%=mod;
}
return cnt;
}
signed main(){
//freopen("","r",stdin);
//freopen("","w",stdout);
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
int h=dfs(0,0,0);
cout<<h<<endl;
return 0;
}
回复
共 9 条回复,欢迎继续交流。
正在加载回复...