首页 > 代码库 > 无聊的我写了一个代码 。。。P1605 迷宫
无聊的我写了一个代码 。。。P1605 迷宫
搜索水题
哎 直接不行了 。
#include <ctype.h>#include <cstdio>void read(int &x){ x=0;char ch=getchar(); while(!isdigit(ch)) ch=getchar(); while(isdigit(ch)) {x=x*10+int(ch-48);ch=getchar();} }int ans,sx,sy,tx,ty,n,m,t,atlas[11][11][11][11],fx[5]={1,-1,0,0},fy[5]={0,0,-1,1};void bfs(int a,int b,int c,int d){ int f[1111][3],l=0,r=0; f[++r][1]=a;f[r][2]=b; do { int x_=f[++l][1],y_=f[l][2]; for(int i=0;i<4;i++) { int t_x=x_+fx[i],t_y=y_+fy[i]; if(atlas[x_][y_][t_x][t_y]==0&&t_x>=1&&t_x<=n&&t_y>=1&&t_y<=m) { if(t_x==c&&t_y==d) ans++; atlas[x_][y_][t_x][t_x]=1; f[++r][1]=t_x;f[r][2]=t_y; } } }while(l<r);}int main(){ read(n);read(m);read(t); read(sx);read(sy);read(tx);read(ty); for(int x,y;t--;) { read(x);read(y); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) atlas[x][y][i][j]=1; } } bfs(sx,sy,tx,ty); printf("%d",ans); return 0;}
#include <ctype.h>#include <cstdio>void read(int &x){ x=0;char ch=getchar(); while(!isdigit(ch)) ch=getchar(); while(isdigit(ch)) {x=x*10+int(ch-48);ch=getchar();} }bool za[11][11];int ans,n,m,t,sx,sy,tx,ty,fx[5]={1,-1,0,0},fy[5]={0,0,-1,1};void dfs(int x,int y){ za[x][y]=1; if(x==tx&&y==ty) {ans++;return;} for(int i=0;i<4;i++) { int t_x=x+fx[i],t_y=y+fy[i]; if(t_x>=1&&t_x<=n&&t_y>=1&&t_y<=m&&!za[t_x][t_y]) { dfs(t_x,t_y); za[t_x][t_y]=0; } }}int main(){ read(n); read(m); read(t); read(sx);read(sy);read(tx);read(ty); for(int x,y;t--;) { read(x); read(y); za[x][y]=1; } dfs(sx,sy); printf("%d",ans); return 0;}
无聊的我写了一个代码 。。。P1605 迷宫
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。