上午 9:00~13:00 复习英语,记单词
diet | 日常饮食,节食 | millionaire | 百万富翁 | |
amaze | 使惊奇,惊愕 | route | 道路,路线,途径,方法 | |
amuse | 逗乐,逗笑 | balance | 平衡,结存,余额 | |
spot | 斑点,地点,发现,方法 | basement | 地下室,地下层 | |
decimal | 小数 | property | 财产,所有物,房地产,特性 | |
shed | 小棚屋,流泪 | approach | 靠近,走进,方法,态度 | |
stature | 身高,地位,声望 | sponsor | 赞助,资助 | |
hardware | 计算机硬件,五金制品,金属器具 | integrity | 正直,善良 | |
vision | 视野,想象,展望,视力 | principle | 行为准则,道德原则,科学原理 | |
giant | 巨大的,特大的,重要的,大公司,伟人,大师 | handle | 拉手,应对,处理,抓,搬动 | |
abandon | 放弃,抛弃 | confidence | 自信,信心 | |
optimism | 乐观 |
下午 dfs尝试理解与练习
链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
给你一个n*m的迷宫,这个迷宫中有以下几个标识:
s代表起点
t代表终点
x代表障碍物
.代表空地
现在你们涵哥想知道能不能从起点走到终点不碰到障碍物(只能上下左右进行移动,并且不能移动到已经移动过的点)。
输入描述:
输入第一行一个整数T(1<=T<=10) 接下来有T组测试数据,对于每一组测试数据,第一行输入2个数n和m(1<=n,m<=500) 接下来n行,每行m个字符代表这个迷宫,每个字符都是上面4个中的一种 数据保证只有一个起点和一个终点
输出描述:
对于每一组测试数据,如果可以的话输出YES,不可以的话输出NO
示例1
输入
1 3 5 s...x x...x ...tx
输出
YES
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int maxn=550;
char st1[maxn][maxn];//定义字符数组
int st2[maxn][maxn];//定义访问数组,未访问时全都为0
int s1[4]={0,1,0,-1};//定义常量数组
int s2[4]={1,0,-1,0};//方向为 上 下 左 右四个方向
int n,m,ans;
void bianli(int x,int y)
{
st2[x][y]=1;//访问过的位置全都为1
if(st1[x][y]=='t')
{
ans=1;
return ;
}
else
for(int i=0;i<4;i++)//遍历上,下,左,右,四个方向,
{
int x1=x+s1[i];
int y1=y+s2[i];
if(x1>=0 && x1<=n && y1>=0 &&y1<=m && st2[x1][y1]!=1 && st1[x1][y1]!='x' )//判断边界条件,判断避免重复,递归循环。
bianli(x1,y1);
}
}
int main()
{
int k,x,y;
char ch1,ch2,ch;
cin>>k;
while(k--)
{
ans=0;
memset(st2,0,sizeof(st2));
cin>>n>>m;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
cin>>st1[i][j];
if(st1[i][j]=='s')
{
x=i;
y=j;
}
}
bianli(x,y);
if(ans==1)
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
}