首页 > 其他分享 >DFS

DFS

时间:2023-03-20 21:56:24浏览次数:43  
标签:ch ss DFS yy xx include id

题目:

1.Bouncy Ball

解法就是模拟。。。另外就是注意怎么停止dfs!详见代码。

//>>>Qiansui
#include<map>
#include<set>
#include<cmath>
#include<queue>
#include<deque>
#include<cstdio>
#include<string>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define ull unsigned long long
#define mem(x,y) memset(x,y,sizeof(x))
//#define int long long

inline ll read()
{
	ll x=0,f=1;char ch=getchar();
	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
	while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
	return x*f;
}

using namespace std;
const int maxm=5e5+5,inf=0x3f3f3f3f,mod=998244353;
int n,m,i[2],j[2],ans;
int fx[4]={1,1,-1,-1},fy[4]={1,-1,1,-1};
bool flag=false;
string d;
map<int,map<string,int>> a;//利用这个对搜索进行标记,去重

void dfs(int x,int y,string ss){
	int id;
	if(ss=="DR") id=0;
	else if(ss=="DL") id=1;
	else if(ss=="UR") id=2;
	else if(ss=="UL") id=3;
	int xx=x,yy=y;
	if(a[m*(xx-1)+yy][ss]){
		return ;
	}else a[m*(xx-1)+yy][ss]=1;
	if(xx==i[1]&&yy==j[1]){
		flag=true;
		return ;
	}
	xx=xx+fx[id];
	yy=yy+fy[id];
	while(xx>=1&&xx<=n&&yy>=1&&yy<=m){
		if(xx==i[1]&&yy==j[1]){
			flag=true;
			return ;
		}
		if(xx==x&&yy==y){
			return ;
		}
		if(a[m*(xx-1)+yy][ss]){
			return ;
		}else a[m*(xx-1)+yy][ss]=1;
		xx=xx+fx[id];
		yy=yy+fy[id];
	}
	string s;
	if(xx==0) s="D";
	else if(xx==n+1) s="U";
	else s=ss[0];
	if(yy==0) s+="R";
	else if(yy==m+1) s+="L";
	else s+=ss[1];
	// cout<<" s: "<<s<<" "<<xx<<" yy: "<<yy<<"\n";
	// cout<<xx-fx[id]<<" xx yy: "<<yy-fy[id]<<"\n";
	++ans;
	dfs(xx-fx[id],yy-fy[id],s);
	return ;
}

void solve(){
	cin>>n>>m>>i[0]>>j[0]>>i[1]>>j[1]>>d;
	ans=0;
	flag=false;
	a.clear();
	dfs(i[0],j[0],d);
	if(flag) cout<<ans<<'\n';
	else cout<<-1<<'\n';
	return ;
}

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

标签:ch,ss,DFS,yy,xx,include,id
From: https://www.cnblogs.com/Qiansui/p/17238018.html

相关文章

  • hdfs的异构存储
    目录1背景2hdfs异构存储类型和存储策略2.1hdfs支持的存储类型2.2hdfs如何知道数据存储目录是那种存储类型2.3存储策略2.3.1在hdfs中支持如下存储策略2.3.2存储策略......
  • django通过fastDFS服务器上传文件
    1.自定义文件存储系统类查看代码 fromdjango.core.files.storageimportStoragefromfdfs_client.clientimportFdfs_clientfromdjango.confimportsettings......
  • HDFS分布式文件系统
    目录1️⃣、HDFS的概述1.1、HDFS产出背景及定义1.2、HDFS优缺点1.3、HDFS组成架构1.4、HDFS文件块大小(面试重点)2️⃣、HDFS的Shell操作2.1、基本语法2.2、命令大全2.3、常用命......
  • 【FastDFS分布式文件系统】2.FastDFS架构概述
    上一篇我们讲解了文件的存储机制,有单机存储、共享存储和分布式存储,那么我们的主角---FastDFS就是一个分布式存储机制的文件系统,本篇为大家介绍一下Fast......
  • 题解:【ARC112C】 DFS Game
    题目链接题目里面的注意点还是很多的,如果读错了题整个思路可能会一点都不对。首先是移动和选取硬币的操作是分开的,所以你移动到了一个有硬币的节点,将是你的对手获得硬币。......
  • PDFSharp - Graphics
    PDFSharp-GraphicsGraphics-PDFsharpandMigraDocWiki所有的Graphics类型都设计成模仿来自System.Drawing命名空间中的GDI+类型。类型的名称也类似,例如:XColo......
  • DFS服务 vim编辑器修改 /etc/exports文件 客户机测试
     ......
  • 《Hadoop Operations》读书笔记 - 1 - 第二章 HDFS
    传统存储是SAN或者NAS,提供了集中化、低延时的块存储或者文件系统,以支持TB级数据。在面对关系型数据库之类的服务时,这是很好的选择。但是面对上万台计算机同时提取几百TB......
  • HDFS--机架感知
    一、背景介绍Hadoop的设计目的:解决海量大文件的处理问题,主要指大数据的存储和计算问题,其中,HDFS解决数据的存储问题;MapReduce解决数据的计算问题 Hadoop的设计考虑:设计分布......
  • [牛客BM70&LeetCode322]零钱兑换Ⅰ——DFS,记忆化搜索,动态规划(C++)
    题目描述给你一个整数数组arr,表示不同面额的硬币;以及一个整数aim,表示需要放入钱包的目标金额。计算并返回可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组......