广搜之鸣人与佐助

原创 2018年04月15日 20:06:04

#include<iostream>
#include <stdio.h>
#include <memory.h>
#include <queue>
using namespace std;
int M,N,T;
char Map[205][205];
int visited[205][205][15];
int dx[]={1,-1,0,0};
int dy[] = {0,0,1,-1};
struct node
{
    int x,y,time,ckl;
    node(int xx,int yy,int tt,int cc):x(xx),y(yy),time(tt),ckl(cc) {};
    node() {}
};
queue<node> q;
int main()
{
    cin >> M >> N >> T;
    node mingren,zuozhu;
    memset(visited,1,sizeof(visited));
    for(int i=1; i<=M; i++)
        for(int j=1; j<=N; j++)
        {
            cin >> Map[i][j];
            if(Map[i][j]=='@')
            {
                mingren=node(i,j,0,T);
            }
            else if(Map[i][j]=='+')
            {
                Map[i][j]='*';
                zuozhu=node(i,j,-1,-1);
            }
            for(int t=0; t<=T; t++)
                visited[i][j][t]=0;
        }
    q.push(mingren);
    visited[mingren.x][mingren.y][mingren.ckl]=1;
    while(!q.empty())
    {
        node now = q.front();
        if(now.x==zuozhu.x && now.y==zuozhu.y)
        {
            cout<<now.time<<endl;
            return 0;
        }
        q.pop();
        for(int i=0; i<4; i++)
        {
            int endx = now.x+dx[i];
            int endy = now.y+dy[i];
            if(endx>0&&endx<=M&&endy>0&&endy<=N && Map[endx][endy]=='*' &&!visited[endx][endy][now.ckl])
            {
                q.push(node(endx,endy,now.time+1,now.ckl));
                visited[endx][endy][now.ckl] = 1;
            }
            if(endx>0&&endx<=M&&endy>0&&endy<=N&&Map[endx][endy]=='#' && (now.ckl>0) &&(!visited[endx][endy][now.ckl-1]))
            {
                q.push(node(endx,endy,now.time+1,now.ckl-1));
                visited[endx][endy][now.ckl-1] = 1;
            }
        }

    }
    cout<<-1<<endl;
    return 0;
}

鸣人与佐助 poj

典型的bfs 技巧在于设置了G[x][y]来进行剪枝,减少了运行时间与空间。即如果在某一点,已经有大于当前的查克拉的路线,就不再继续走这一点。 #include #include #inclu...
  • Aaron_Koyalun
  • Aaron_Koyalun
  • 2017-03-26 20:08:13
  • 355

openjudge 鸣人和佐助

6044:鸣人和佐助 描述 佐助被大蛇丸诱骗走了,鸣人在多少时间内能追上他呢? 已知一张地图(以二维矩阵的形式表示)以及佐助和鸣人的位置。地图上的每个位置都可以走到,只不过有些位...
  • clover_hxy
  • clover_hxy
  • 2015-12-16 19:03:49
  • 966

鸣人和佐助

描述 佐助被大蛇丸诱骗走了,鸣人在多少时间内能追上他呢? 已知一张地图(以二维矩阵的形式表示)以及佐助和鸣人的位置。地图上的每个位置都可以走到,只不过有些位置上有大蛇丸的手下,需要先打败大...
  • u010524510
  • u010524510
  • 2015-07-30 13:24:27
  • 1629

POJ4115:鸣人和佐助(广搜)

POJ4115:鸣人和佐助 描述 已知一张地图(以二维矩阵的形式表示)以及佐助和鸣人的位置。地图上的每个位置都可以走到,只不过有些位置上有大蛇丸的手下,需要先打败大蛇丸的手下才能到这些位置。...
  • WaveBridge
  • WaveBridge
  • 2017-07-11 19:29:02
  • 322

简单算法bfs——百炼11:鸣人和佐助

11:鸣人和佐助 点击打开链接http://bailian.openjudge.cn/2016acm/11/ 总时间限制: 1000ms 内存限制: 65536kB ...
  • curson_
  • curson_
  • 2016-07-29 11:01:14
  • 889

POJ 鸣人和佐助

网上的代码: #include #include #include #include using namespace std; const int maxn = 210; char g[m...
  • qq_32473657
  • qq_32473657
  • 2016-07-25 09:28:37
  • 1314

百练4115 鸣人和佐助(变式BFS)

百练4115 鸣人和佐助(变式BFS)
  • Ema1997
  • Ema1997
  • 2016-08-03 23:47:10
  • 1268

百练6044--鸣人与佐助(BFS)

题目大意:又是迷宫啊迷宫啊。鸣人救佐助,一开始手上有一定数量的查克拉,路上遇见大蛇丸的手下,需要耗费一个查克拉杀死对方,才能继续走,然而鸣人能够瞬杀,不耗费时间,只消耗移动距离的时间。没有查克拉,就要...
  • hhhhhhj123
  • hhhhhhj123
  • 2015-07-26 20:58:29
  • 1421

[NOI OJ]6044:鸣人和佐助

6044:鸣人和佐助 总时间限制: 1000ms 内存限制: 65536kB 描述 佐助被大蛇丸诱骗走了,鸣人在多少时间内能追上他呢? 已知一张地图(以二维矩阵的形式表示)以及佐助和鸣人的...
  • u013512086
  • u013512086
  • 2016-10-29 15:31:46
  • 853

poj 4115:鸣人和佐助

4115:鸣人和佐助 总时间限制: 1000ms 内存限制: 65536kB 描述 佐助被大蛇丸诱骗走了,鸣人在多少时间内能追上他呢? 已知一张地图(以二维矩阵的形式表示)以及...
  • m0_37975647
  • m0_37975647
  • 2017-09-01 00:00:57
  • 70
收藏助手
不良信息举报
您举报文章:广搜之鸣人与佐助
举报原因:
原因补充:

(最多只允许输入30个字)