dfsAC了好吧!
2024-08-24 12:31:40
发布于:浙江
5阅读
0回复
0点赞
今天翻之前的讨论,发现之前我那dfs做A+B竟然没过?!
我当即改代码,也是AC了好吧,奇葩题解就不解释了哈,上代码!
#include<bits/stdc++.h>
#define int long long
using namespace std;
int sum,nextt[4][2]={1,0,0,1,-1,0,0,-1};//方向数组
int mp[105][105];//随机生成地图
bool vis[105][105];//标记数组,标记哪些走过了不能再走
void dfs(int x, int y) {
	if(vis[x][y]==1)return; 
	vis[x][y]=1;
	for(int i=0;i<4;i++){
		int dx=x+nextt[i][0],dy=y+nextt[i][1];
		if(dx>=1&&dx<=100&&dy>=1&&dy<=100&&vis[dx][dy]==false){//判断能不能走
			sum+=mp[dx][dy];
			dfs(dx,dy);
		}
	} 
}
signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);//这两行就cin,cout加速,不会就忽略吧
	int x,y;
	cin>>x>>y;
	srand(time(NULL)); //用时间不断生成新种子防止重复导致数字覆盖得不出正确值
	mp[rand()%99+1][rand()%99+1] = x;
	mp[rand()%99+1][rand()%99+1] = y;
	dfs(rand()%99+1,rand()%99+1);
	cout<<sum<<endl;
	return 0;
}
从理论上来说,这个代码任然有一定数字覆盖而导致错误的可能,看看有哪位非酋幸运儿可以拿这个WA掉
客官老爷们!有关注的给个关注,有赞的点个赞,谢谢大家!!!
这里空空如也


有帮助,赞一个