P6207 [USACO06OCT] Cows on Skates G(dfs之回溯不用取消vis标记)

news/2024/7/6 12:20:21

1:坑点:

DFS想法:一条路走到黑,不行就返回。

但是,题目只需要我们输出一条路径,所以我们的vis数组不需要取消标记(我就是被这个坑了

2:路径存储

up采用stack来储存,这样子每次回溯只需要pop一下,很方便,有木有~

if(x==n&&y==m){//结束 
		stack<node>s;
		while(!st.empty()){
			s.push(st.top());
			st.pop();
		}
		while(!s.empty()){
			cout<<s.top().x<<" "<<s.top().y<<"\n";
			s.pop();
		}
		exit(0);
	}

3:结束优化

我们找到一条后就可以输出答案并结束啦,我们可以采用exit(0),他可以让程序直接停止,这样子我们不用让dfs一路return啦~

4:ACcdoe:

#include<bits/stdc++.h>
using namespace std;
const int N=115;
#define int long long
int n,m,idx[]={0,0,1,-1},idy[]={1,-1,0,0};
bool vis[N][N];
char mp[N][N];
struct node{
	int x,y;
};
stack<node>st;
void dfs(int x,int y){
	
	if(x==n&&y==m){//结束 
		stack<node>s;
		while(!st.empty()){
			s.push(st.top());
			st.pop();
		}
		while(!s.empty()){
			cout<<s.top().x<<" "<<s.top().y<<"\n";
			s.pop();
		}
		exit(0);
	}
	
	for(int i=0;i<4;i++){
		int xx=x+idx[i];
		int yy=y+idy[i];
		if(xx<1||xx>n||yy<1||yy>m||vis[xx][yy]||mp[xx][yy]=='*')
		 continue;
		 vis[xx][yy]=true;
		 st.push({xx,yy});
		 dfs(xx,yy);
		 //vis[xx][yy]=false;
		 st.pop();
	}
}
void solve() {
   cin>>n>>m;
   for(int i=1;i<=n;i++)
   for(int j=1;j<=m;j++)
   cin>>mp[i][j];
   st.push({1,1});
   dfs(1,1);
}
signed main() {

	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	int tt=1;
	//cin>>tt;
	while(tt--)
		solve();
	return 0;
}

over~


http://lihuaxi.xjx100.cn/news/1384683.html

相关文章

day35-Image Carousel(图片轮播图简易版)

50 天学习 50 个项目 - HTMLCSS and JavaScript day35-Image Carousel&#xff08;图片轮播图简易版&#xff09; 效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport…

Goby 漏洞发布|Metabase JDBC 远程代码执行漏洞(CVE-2023-38646)

漏洞名称&#xff1a;Metabase JDBC 远程代码执行漏洞&#xff08;CVE-2023-38646&#xff09; English Name&#xff1a;Metabase JDBC Remote Code Execution Vulnerability (CVE-2023-38646) CVSS core: 9.8 影响资产数&#xff1a;66604 漏洞描述&#xff1a; Metabas…

记录浙政钉的消息通知的一次开发实战记录

先忍不住吐槽下钉钉的开发文档&#xff0c;实在是不敢恭维&#xff0c;首先每个术语描述都是不统一的&#xff0c;比如有些地方写“”群聊“”&#xff0c;有些地方写“会话”&#xff0c;有些地方写“钉消息”&#xff0c;总之他们自己想怎么写&#xff0c;怎么写&#xff0c;…

Vue+element Ui的el-select同时获取value和label的方法总结

1.通过ref的形式&#xff08;推荐) <template><div class"root"><el-selectref"optionRef"change"handleChange"v-model"value"placeholder"请选择"style"width: 250px"><el-optionv-for&q…

【Ubuntu18.04安装FileZilla】

Ubuntu18.04安装FileZilla 1 FileZilla简介2 安装方式3 使用方式3.1 连接FTP服务器3.1.1 快速连接3.1.2 通过站点管理器 1 FileZilla简介 FileZilla是自由开源、快速、可信赖的FTP客户端以及服务器端应用&#xff0c;具有多种特色、直观的接口。 特点&#xff1a;可控性、有条…

【Docker】Docker安全性与安全实践(五)

前言&#xff1a; Docker安全性的作用和意义在于确保容器化应用程序和镜像的隔离性、保护数据和系统资源、防止恶意攻击&#xff0c;以及提高应用的整体安全性。 文章目录 1. Docker安全性1.1 隔离性1.2 镜像安全1.3 特权访问1.4 数据保护 2. Docker安全实践2.1 使用官方镜像或…

素描基础知识

素描基础入门 1.基础线条 1.1 握笔姿势及长线条 2.排线 2.1 不同姿势画排线 2.1.1 姿势画排线 2.1.2 用手腕画排线 2.1.3 小拇指画排线 2.1.4 叠加排线 2.1.5交叉排线 2.2 纸张擦法 2.3 排线学习榜样 2.4 四种常见的排线 3、定向连线 4、一点透视 4.1 透视的规律 4.2 焦点透视…

文创产品火出圈,熊猫伴伴受到大家喜爱

在各种IP火遍网络的同时&#xff0c;其衍生出来的各种文创产品也凭借着自身的特点火到出圈&#xff0c;不仅爆红于网络上&#xff0c;就连线下的各种商店也有着其具象化的商品售卖。例如最近深受年轻人喜爱的熊猫伴伴&#xff0c;就凭借着其可爱的外表&#xff0c;受到了很多人…