zoukankan      html  css  js  c++  java
  • UVa 10047 自行车 状态记录广搜

    每个格子(x,y,drection,color)

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<queue>
    using namespace std;
    char a[30][30];
    int vis[30][30][4][5];
    int n,m;
    int dx[4]={-1,0,1,0};
    int dy[4]={0,1,0,-1};
    struct node{
        int x,y,di,co,t;
        node(int xx,int yy,int d,int c,int st)
        {
            x=xx;y=yy;di=d;co=c;t=st;
        }
    };
    queue<node> q;
    void bfs()
    {
        while(!q.empty())
        {
            node u=q.front();
            q.pop();
            if(a[u.x][u.y]=='T'&&u.co==0)
            {
                printf("minimum time = %d sec
    ",u.t);
                return;
            }
            int x=u.x,y=u.y,co=u.co;
            int di=(u.di+1)%4;//向右转
            if(!vis[x][y][di][co])
            {
                vis[x][y][di][co]=1;
                q.push(node(x,y,di,co,u.t+1));
            }
            di=(u.di+3)%4;//向左转
            if(!vis[x][y][di][co])
            {
                vis[x][y][di][co]=1;
                q.push(node(x,y,di,co,u.t+1));
            }
            di=u.di;//前进
            x+=dx[di];y+=dy[di];
            co=(co+1)%5;//下一种颜色
            if(x<n&&x>=0&&y<m&&y>=0&&a[x][y]!='#'&&!vis[x][y][di][co])
            {
                q.push(node(x,y,di,co,u.t+1));
                vis[x][y][di][co]=1;
            }
        }
        printf("destination not reachable
    ");
    }
    int main()
    {
        int ss=1;
        while(scanf("%d%d",&n,&m)&&n&&m)
        {
            if(ss>1) printf("
    ");
            memset(vis,0,sizeof(vis));
            while(!q.empty()) q.pop();
            for(int i=0;i<n;i++)
                for(int j=0;j<m;j++)
                {
                    cin>>a[i][j];
                    if(a[i][j]=='S')
                    {
                        q.push(node(i,j,0,0,0));
                        vis[i][j][0][0]=1;
                    }
                }
            printf("Case #%d
    ",ss++);
            bfs();
        }
        return 0;
    }
  • 相关阅读:
    XML 使用例子(转)
    [转载]网游数据解释
    [转载]游戏引擎列表
    (转)XML 使用
    LuaPlus新手使用方法(转)
    [转载]很有参考意义的显卡性能排行榜
    (转)LuaPlus子表遍历
    (转)LuaPlus集成Lua脚本
    HTML5尝鲜(1):使用aduio标签打造音乐播放器
    oracle的rollup
  • 原文地址:https://www.cnblogs.com/Aragaki/p/7544709.html
Copyright © 2011-2022 走看看