自己出了一道dfs题,但打不出正解
  • 板块灌水区
  • 楼主j1368虎啸一小声
  • 当前回复16
  • 已保存回复16
  • 发布时间2023/1/13 11:22
  • 上次更新2023/10/24 04:28:21
查看原帖
自己出了一道dfs题,但打不出正解
542799
j1368虎啸一小声楼主2023/1/13 11:22

rt,悬赏关注(可以互关最好),dalao们帮帮忙

我的代码:

#include<bits/stdc++.h>
using namespace std;
int n,s[15][15],a,b,c,d;
bool ans;
void dfs(int time,int stax,int stay)
{
	if(time>10)return;
	if(stax==c&&stay==d){
		ans=true;
		return;
	}
	if(s[stax+1][stay]==0&&time+1<=10){
		dfs(time+1,stax+1,stay);
	}
	if(s[stax+1][stay]==1&&time+2<=10){
		dfs(time+2,stax+1,stay);
	}
	if(s[stax-1][stay]==0&&time+1<=10){
		dfs(time+1,stax-1,stay);
	}
	if(s[stax+1][stay]==1&&time+2<=10){
		dfs(time+2,stax-1,stay);
	}
	if(s[stax][stay+1]==0&&time+1<=10){
		dfs(time+1,stax,stay+1);
	}
	if(s[stax][stay+1]==1&&time+2<=10){
		dfs(time+2,stax,stay+1);
	}
	if(s[stax][stay-1]==0&&time+1<=10){
		dfs(time+1,stax,stay-1);
	}
	if(s[stax][stay-1]==1&&time+2<=10){
		dfs(time+2,stax,stay-1);
	}
}
int main()
{
	ans=false;
	cin>>n;
	for(int i=0;i<=n+1;i++){
		for(int j=0;j<=n+1;j++){
			s[i][j]=999;
		}
	} 
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>s[i][j];
			if(s[i][j]==3){
				a=i;
				b=j;
			}
			if(s[i][j]==2){
				c=i;
				d=j;
			}
		}
	}
	dfs(0,a,b);
	if(ans)cout<<"YES";
	else cout<<"gnlww";
	return 0;
}
2023/1/13 11:22
加载中...