博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Uva 352 The Seasonal War
阅读量:7152 次
发布时间:2019-06-29

本文共 1500 字,大约阅读时间需要 5 分钟。

1 #include 
2 #include
3 #include
4 using namespace std; 5 6 int IsVis[26][26];//记录位置是否被访问 7 char Eagles[26][26]; 8 typedef struct node 9 {10 int x,y;11 }War;12 int Move[8][2]={-1,0, 0,1, 1,1, 1,0, -1,1, 0,-1, 1,-1, -1,-1};//移动方位13 void Bfs(int x,int y);14 int Judge();15 int line,EaglesNum;16 queue
Que;17 int main(){18 19 //freopen("D:\\t.txt","r",stdin);20 int flag = 1;21 while(cin>>line){22 23 for(int i = 0;i< line;i++){24 for(int j = 0;j < line;j++){25 cin>>Eagles[i][j];26 }27 }28 EaglesNum = Judge();29 cout<<"Image number "<< flag <<" contains "<
<<" war eagles."<
< line;j++){40 if(Eagles[i][j] == '1' && !IsVis[i][j]){41 p.x = i;42 p.y = j;43 Que.push(p);44 Bfs(i,j);45 Num++;46 }47 }48 }49 return Num;50 }51 void Bfs(int x,int y){52 War m,n;53 while(!Que.empty()){54 m = Que.front();55 IsVis[m.x][m.y] = 1;56 for(int k = 0;k < 8;k++){57 if((m.x + Move[k][0] >= 0) && (m.x + Move[k][0] < line) && (m.y + Move[k][1] >= 0) && (m.y + Move[k][1] < line)58 && !IsVis[m.x + Move[k][0]][m.y + Move[k][1]]){ //判断移动是否超范围及是否被访问59 n.x = m.x + Move[k][0];60 n.y = m.y + Move[k][1];61 IsVis[n.x][n.y] = 1;62 if(Eagles[n.x][n.y] == '1')Que.push(n);63 }64 }65 Que.pop();66 }67 }

修改后的代码

bfs的题目。

1.注意队列使用;

2.注意移动范围;

3.输入以字符形式输入。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

转载于:https://www.cnblogs.com/ohxiaobai/p/4044724.html

你可能感兴趣的文章
35种神奇的心理效应
查看>>
memcached查看和清理
查看>>
AD身份验证时,系统使用的属性
查看>>
myeclipse连接数据库
查看>>
重部署与热部署杂记
查看>>
C++中#if #ifdef 的作用
查看>>
SQLServer - 约束
查看>>
在交换机上划分Vlan
查看>>
DB2 1069错误 由于登陆失败而无法启动服务的解决方法
查看>>
反射发出 Emit
查看>>
Apache Tajo:一个运行在YARN上支持SQL的分布式数据仓库
查看>>
使用SQL语句清空数据库所有表的数据
查看>>
[置顶] 搭建一个流媒体服务器--引子
查看>>
poj1504
查看>>
什么是ICMPv4协议?
查看>>
Android开发入门必看的知识体系
查看>>
String,StringBuffer与StringBuilder的差别??
查看>>
普林斯顿公开课 算法2-3:插入排序
查看>>
HTML5游戏开发引擎Pixi.js新手入门讲解
查看>>
51单片机寄存器组的设置(转)
查看>>