1. 程式人生 > >無聊的我寫了一個代碼 。。。P1605 迷宮

無聊的我寫了一個代碼 。。。P1605 迷宮

技術 open closed char log one void ide type

搜索水題

哎 直接不行了 。

技術分享
#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 迷宮