无聊的我写了一个代码 。。。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

 

posted @ 2017-06-07 14:58  杀猪状元  阅读(173)  评论(0编辑  收藏  举报