美式足球
来源:互联网 发布:super meat boy mac 编辑:程序博客网 时间:2024/04/29 00:37
题意:美式足球的比赛规则你造吗?让我们先来了解一下:
在美式足球中,四分卫负责指挥整只球队的进攻战术和跑位,以及给接球员传球的任务。四分卫是一只球队进攻组最重要的球员,而且一般身体都相对比较弱小,所以通常球队会安排5-7名大汉来保护他,其中站在四分卫前方、排成一线的5名球员称为进攻锋线,他们通常都是135公斤左右的壮汉。
对防守方来说,攻击对手的四分卫当然是最直接的限制对手进攻的方法。如果效果好,就可以在对方四分卫传球之前将其按翻在地,称之为擒杀。擒杀是最好的鼓舞防守队士气的方法,因为对方连传球的机会都没有,进攻就结束了,还必须倒退一些距离开球。凶狠的擒杀甚至能够将对方的四分卫弄伤,从而迫使对方更换这个进攻核心。
在本题中,输入给出准备擒杀四分卫的防守球员的位置、对方每个进攻锋线球员的位置以及对方四分卫的位置,你的任务是求出这名准备擒杀的防守球员至少要移动多少步,才能够擒杀对所有的球员都是一块连续的、不中空的2维区域。防守球员不可以从进攻锋线的身体上穿过,也不可以从界外穿过(只能走空地方四分卫。假设对方进攻锋线和四分卫在这个过程中都不会移动。只有1名防守球员,防守球员只要碰到对方四分卫就算擒杀。
防守队员不可以转动身体,只能平移。防守队员的身体所有部分向同一个方向(上、下、左、右)移动1格的过程叫做1步。
思路:使用map数组,运用广度优先,好吧我承认我没有什么思路的,说多了全是套路,好吧我是搜的答案,说起来很不爽,我竟然连改一下都不知道从哪里下手,太悲哀。
感悟:我只能说真的很遗憾,没能多做几道深搜和广搜的题,虽然真的很麻烦,但仅仅是从这一道题就能学到很多知识了,后悔自己没多花点时间在这个上面。
AC代码:
#include<stdio.h>#include<string.h>#include<queue>#include<algorithm>using namespace std;char map[120][120];int vis[120][120],i,j,k,l,m,n,len,ll;struct point{ int x; int y; int step;}start;struct nod{ int vx; int vy;} t[100];int dx[]={1,0,-1,0};int dy[]={0,-1,0,1};int judge(int x,int y){ if(x<0||x==m||y<0||y==n||map[x][y]=='O') return 0; return 1;}int bfs(){ memset(vis,0,sizeof(vis)); point team; queue<point > q; q.push(start); vis[start.x][start.y]=1; while(!q.empty()) { point p; p=q.front(); q.pop(); for(i=0;i<4;i++) { team=p; team.step++; team.x+=dx[i]; team.y+=dy[i]; for(j=0;j<len;j++) { if(judge(team.x+t[j].vx,team.y+t[j].vy)==0) break; } if(j!=len) continue; if(vis[team.x][team.y]) continue; for(j=0;j<len;j++) if(map[team.x+t[j].vx][team.y+t[j].vy]=='Q') return team.step; vis[team.x][team.y]=1; q.push(team); } } return -1;}int main(){ while(scanf("%d%d",&m,&n),m+n) { for(i=0;i<m;i++) scanf("%s",map[i]); len=0; int flag=0; for(i=0;i<m;i++) { for(j=0;j<n;j++) { if(map[i][j]=='D') { flag=1; start.x=i; start.y=j; break; } } if(flag) break; } start.step = 0; for(i=0;i<m;i++) for(j=0;j<n;j++) { if(map[i][j]=='D') { t[len].vx=i-start.x; t[len++].vy=j-start.y; } } int ans=bfs(); if(ans<0) printf("Impossible\n"); else printf("%d\n",ans); } return 0;}//tai ma fan le ╤_╤
- 美式足球
- 足球
- 足球
- 足球
- 美式民主
- 美式选举与美式民主
- 【足球】为啥喜欢足球?
- 美式木偶剧
- 美式烹饪知多少
- 美式英语儿话音
- window8 添加美式键盘
- 美式音标学习小结
- 很好的美式教育
- 找回win8 美式键盘
- 新热风:美式家具
- 【英语】美式元音 总结
- 美式治愈系厨房
- 美式英语口语规则
- 广度优先搜索
- 协方差矩阵计算
- Windows线程创建、退出及资源释放
- ACboy 再次需要你的帮助
- hdu 1789 Doing Homework again
- 美式足球
- asp.net MVC 中 Session统一验证的方法
- Mysql优化技巧
- 十、命令设计模式
- 最长上升子序列的个数
- 笔记1:“请求/响应”模型
- 订单捕获-销售订单概览
- 图的存储结构-邻接表
- poj 3450 Corporate Identity