首页 > 代码库 > 无聊的我写了一个代码 。。。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;}
40分 有兴趣帮忙看看
技术分享
#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;}
AC

 

无聊的我写了一个代码 。。。P1605 迷宫