站外题求助,玄5关
  • 板块学术版
  • 楼主_Winham_
  • 当前回复9
  • 已保存回复9
  • 发布时间2024/8/10 15:07
  • 上次更新2024/8/10 15:59:43
查看原帖
站外题求助,玄5关
761972
_Winham_楼主2024/8/10 15:07

这道题可以打dfs吗,为什么我的dfs代码会错,是我漏想什么吗?

求助大佬,在线等,急。

#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;
}


2024/8/10 15:07
加载中...