网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
if(v.check()&&flag[v.x][v.y][v.z]==false){
flag[v.x][v.y][v.z]=true;
if(v.x==e.x&&v.y==e.y&&v.z==e.z)
return v.step;
if(str[v.x][v.y][v.z]=='X')
continue;
que.push(v);
}
}
}
return -1;
}
char ch[100];
int main(){
while(scanf(“%s%d”,ch,&n)!=EOF){
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf(“%s”,str[i][j]);
while(scanf(“%s”,ch)){
if(strcmp(ch,“END”)0)
break;
sscanf(ch,“%d”,&s.x);
scanf(“%d%d%d%d%d”,&s.y,&s.z,&e.x,&e.y,&e.z);
int ans=bfs();
if(ans-1)
printf(“NO ROUTE\n”);
else
printf(“%d %d\n”,n,ans);
}
}
return 0;
}
HDU 1728 限制拐弯次数
[cpp] view plain copy
#include
#include
#include
#include
#define LL unsigned long long
using namespace std;
int n,m,k;
int way[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
char str[105][105];
bool flag[105][105];
struct Node{
int x,y,dir,cnt;
bool check(){
if(x>=0&&x<n&&y>=0&&y<m)
return true;
return false;
}
}s,e,u,v;
int bfs(){
queueque;
que.push(s);
memset(flag,false,sizeof(flag));
flag[s.x][s.y]=true;
while(!que.empty()){
u=que.front();
que.pop();
for(int i=0;i<4;i++){
v.cnt=u.cnt;
if(u.dir!=-1&&u.dir!=i)
v.cnt++;
if(v.cnt>k)
continue;
v.dir=i;
for(int j=1;;j++){
v.x=u.x+way[i][0]*j;
v.y=u.y+way[i][1]j;
if(v.check()&&str[v.x][v.y]!=''){
if(flag[v.x][v.y])
continue;
flag[v.x][v.y]=true;
if(v.xe.x&&v.ye.y)
return true;
que.push(v);
}
else
break;
}
}
}
return false;
}
int main(){
int t;
scanf(“%d”,&t);
while(t–){
scanf(“%d%d”,&n,&m);
for(int i=0;i<n;i++)
scanf(“%s”,str[i]);
scanf(“%d%d%d%d%d”,&k,&s.y,&s.x,&e.y,&e.x);
s.x–;s.y–;e.x–;e.y–;
s.cnt=0;s.dir=-1;
if((s.xe.x&&s.ye.y)||bfs())
printf(“yes\n”);
else
printf(“no\n”);
}
return 0;
}
HDU 1242 BFS+优先队列
[cpp] view plain copy
#include
#include
#include
#include
#include
#define LL long long
using namespace std;
struct Node{
int x,y,step;
bool operator<(const Node &n1)const{
return step>n1.step;
}
}s,e,u,v;
int n,m;
char str[205][205];
int way[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
int bfs(){
priority_queueque;
bool flag[205][205];
memset(flag,0,sizeof(flag));
s.step=0;
que.push(s);
flag[s.x][s.y]=1;
while(!que.empty()){
u=que.top();
que.pop();
for(int i=0;i<4;i++){
v.x=u.x+way[i][0];
v.y=u.y+way[i][1];
if(v.x>=0&&v.y>=0&&v.x<n&&v.y<m&&flag[v.x][v.y]0&&str[v.x][v.y]!=‘#’){
flag[v.x][v.y]=1;
if(str[v.x][v.y]‘x’)
v.step=u.step+2;
else
v.step=u.step+1;
if(v.xe.x&&v.ye.y)
return v.step;
que.push(v);
}
}
}
return -1;
}
int main(){
while(scanf(“%d%d”,&n,&m)!=EOF){
for(int i=0;i<n;i++){
scanf(“%s”,str[i]);
for(int j=0;j<m;j++)
if(str[i][j]‘a’){
s.x=i;
s.y=j;
}
else if(str[i][j]‘r’){
e.x=i;
e.y=j;
}
}
int ans=bfs();
if(ans==-1)
printf(“Poor ANGEL has to stay in the prison all his life.\n”);
else
printf(“%d\n”,ans);
}
return 0;
}
HDU 1429 BFS+二进制压缩
[cpp] view plain copy
#include
#include
#include
#include
#include
#define LL unsigned long long
using namespace std;
int n,m,T;
int way[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
char str[21][21];
bool flag[21][21][1024];
struct Node{
short x,y,step;
short key;
bool check(){
if(x>=0&&x<n&&y>=0&&y<m)
return true;
return false;
}
}s,e,u,v;
queueque;
int bfs(){
if(!que.empty())
que.pop();
que.push(s);
memset(flag,false,sizeof(flag));
while(!que.empty()){
u=que.front();
que.pop();
for(int i=0;i<4;i++){
v=u;
v.step++;
v.x+=way[i][0];
v.y+=way[i][1];
if(v.step>=T)
break;
if(v.check()&&str[v.x][v.y]!='*'){
if(str[v.x][v.y]=='^')
return v.step;
if(str[v.x][v.y]>='A'&&str[v.x][v.y]<='J'){
if(((1<<(str[v.x][v.y]-'A'))&v.key)&&flag[v.x][v.y][v.key]==false){
que.push(v);
flag[v.x][v.y][v.key]=true;
}
}
else if(str[v.x][v.y]>='a'&&str[v.x][v.y]<='j'){
v.key|=(1<<(str[v.x][v.y]-'a'));
if(flag[v.x][v.y][v.key]==false){
que.push(v);
flag[v.x][v.y][v.key]=true;
}
}
else{ //相当于空地
if(!flag[v.x][v.y][v.key]){
flag[v.x][v.y][v.key]=true;
que.push(v);
}
}
}
}
}
return -1;
}
int main(){
while(scanf(“%d%d%d”,&n,&m,&T)!=EOF){
for(int i=0;i<n;i++){
scanf(“%s”,str[i]);
for(int j=0;j<m;j++){
if(str[i][j]==‘@’){
s.x=i;
s.y=j;
s.step=0;
s.key=0;
}
}
}
printf(“%d\n”,bfs());
}
return 0;
}
![img](https://img-blog.csdnimg.cn/img_convert/f9fd6be7cb3c50870feccf3a61d92025.png)
![img](https://img-blog.csdnimg.cn/img_convert/84f7a55b64765df6d7c331ac36dbdf3f.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**
``
[外链图片转存中...(img-r64crr6r-1715522036876)]
[外链图片转存中...(img-s5V1YR6D-1715522036877)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**