炸弹人 广度优先—C
来源:互联网 发布:inside剧情解析 知乎 编辑:程序博客网 时间:2024/05/16 05:06
二维地图,找出哪一点可以炸最多的敌人,使用广度优先遍历每个可达点,计算每个点可以炸的敌人数,找出最多的那个点.
#include<stdio.h>char a[20][20];//存地图struct node{ int x; int y;};int getnum(int x,int y){ int sum=0 ,i,j; i=x; j=y; while(a[i][j]!='#') { if(a[i][j]=='G') sum++; j++; } i=x; j=y; while(a[i][j]!='#') { if(a[i][j]=='G') sum++; i++; } i=x; j=y; while(a[i][j]!='#') { if(a[i][j]=='G') sum++; j--; } i=x; j=y; while(a[i][j]!='#') { if(a[i][j]=='G') sum++; i--; } return sum;}int main(){ int i,j,k,startx,starty,tx,ty; int n,m,max,sum,mx,my; int book[20][20]={0}; struct node queue[400],t; int head,tail; int next[4][2]={{0,1},{1,0},{0,-1},{-1,0}}; scanf("%d%d%d%d",&n,&m,&startx,&starty); for(i=0;i<=n-1;i++) scanf("%s",a[i]);//读入n行字符 head=1; tail=1; queue[tail].x=startx; queue[tail].y=starty; tail++; book[startx][starty]=1; max=getnum(startx,starty); while(head<tail) { t=queue[head]; for(k=0;k<=3;k++) { tx=t.x+next[k][0]; ty=t.y+next[k][1]; if(tx<0||tx>n-1||ty<0||ty>m-1) continue; if(a[tx][ty]=='.'&&book[tx][ty]==0) { book[tx][ty]=1; queue[tail].x=tx; queue[tail].y=ty; tail++; sum=getnum(tx,ty); if(sum>max) { max=sum; mx=tx; my=ty; } } } head++; } printf("炸弹放在(%d,%d)处,炸的敌人最多为%d",mx,my,sum); return 0;}
阅读全文
0 0
- 炸弹人 广度优先—C
- 炸弹人(广度优先搜索)
- 广度优先搜索-炸弹人问题
- BFS广度优先搜索 炸弹人
- 图的广度优先遍历—C
- 图的深度、广度优先搜索——C/C++
- 迷宫最短路径 广度优先搜索—C
- 深度优先搜索-炸弹人问题
- 深度优先搜索+解炸弹人游戏
- BFS深度优先搜索 炸弹人
- 再解炸弹人--广度搜索和深度搜索
- 深度、广度优先遍历算法C实现
- C语言队列实现广度优先遍历
- 广度优先遍历 BFS C实现
- 广度优先遍历(c/c++实现)
- C广度优先搜索,图的遍历
- 广度优先搜索的c语言实现
- 深度、广度优先遍历算法C实现
- 运用jQuery+jplayer 制作简洁音乐播放器
- 光流Optical Flow介绍与OpenCV实现
- React Native工作小技巧及填坑记录
- char与byte的区别
- eclipse创建activiti项目,mysql作数据库
- 炸弹人 广度优先—C
- PHP数组(1)
- SeaSar2之通过自动注入的方式管理Bean-yellowcong
- 什么是Docker
- 了解数据库事务
- Vmware虚拟机中windows系统用户名密码忘记处理方案
- Codeforces Round #430 (Div. 2) A. Kirill And The Game
- react native天气项目
- 个人日记