• Uva 352 The Seasonal War


     1 #include <iostream>
     2 #include <cstring>
     3 #include <queue>
     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<War> 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 "<<EaglesNum<<" war eagles."<<endl;
    30         flag++;
    31     }
    32     return 0;
    33 }
    34 int Judge(){
    35     War p;
    36     int Num = 0;
    37     memset(IsVis,0,sizeof(IsVis));//每一回合初始化
    38     for(int i = 0;i< line;i++){
    39         for(int j = 0;j < 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.输入以字符形式输入。

    Donghua University
  • 相关阅读:
    html php插入百度地图定位
    thinkphp验证功能(部分)
    thinkphp用ajax注册及检测个人见解
    文件系统处理_下
    文件系统处理
    jQuery ajax
    jquery(复选框全选)
    jquery(鼠标)
    找房子(数据库应用)
    php基础题
  • 原文地址:https://www.cnblogs.com/ohxiaobai/p/4044724.html
Copyright © 2020-2023  润新知