栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 3652 Maze

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 3652 Maze

#include<stdio.h>#include<string.h>#include<algorithm>#include<queue>using namespace std;struct point{int x,y;}mon[10],S,T;int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};int MO[60][60];struct node{friend bool operator <(node a,node b){if(a.turn==b.turn)return a.hp<b.hp;return a.turn>b.turn;}int turn;int hp;int tai;point P;};int N,M,L;int maze[100][100];struct xx{int tt,hh;}vis[52][52][(1<<6)];int bfs(){memset(vis,63,sizeof(vis));priority_queue<node>q;node e;e.P=S;e.tai=1<<(MO[S.x][S.y]);e.hp=0;e.turn=0;vis[e.P.x][e.P.y][e.tai].tt=e.turn;vis[e.P.x][e.P.y][e.tai].hh=e.hp;q.push(e);while(!q.empty()){node X=q.top(); q.pop();if(X.P.x==T.x&&X.P.y==T.y){return X.turn;}if(X.hp==0){X.hp=L;X.turn++;}for(int i=0;i<4;i++){int nx=X.P.x+dir[i][0];int ny=X.P.y+dir[i][1];if(nx>N||nx<1||ny>M||ny<1)continue;if(maze[nx][ny]==-1)continue;e.P.x=nx;e.P.y=ny;if(maze[nx][ny]==0){e.hp=X.hp-1;e.turn=X.turn;e.tai=X.tai|(1<<MO[nx][ny]);}else{if(X.tai&(1<<maze[nx][ny])){e.hp=X.hp-1;e.turn=X.turn;e.tai=X.tai|(1<<MO[nx][ny]);}else{e.hp=0;e.turn=X.turn;e.tai=X.tai|(1<<MO[nx][ny]);}}if(e.turn<vis[e.P.x][e.P.y][e.tai].tt||(e.turn==vis[e.P.x][e.P.y][e.tai].tt&&e.hp>vis[e.P.x][e.P.y][e.tai].hh)){q.push(e);vis[e.P.x][e.P.y][e.tai].tt=e.turn;vis[e.P.x][e.P.y][e.tai].hh=e.hp;}}}return -1;}int main(){while(scanf("%d%d%d",&N,&M,&L)!=EOF){memset(MO,0,sizeof(MO));memset(maze,0,sizeof(maze));for(int i=1;i<=N;i++)for(int j=1;j<=M;j++)scanf("%d",&maze[i][j]);int k;scanf("%d",&k);for(int i=1;i<=k;i++){scanf("%d%d",&mon[i].x,&mon[i].y);MO[mon[i].x][mon[i].y]=i;}scanf("%d%d%d%d",&S.x,&S.y,&T.x,&T.y);int ans=bfs();if(ans==-1)printf("We need God's help!n");elseprintf("%dn",ans);}}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/375024.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号