传染




package work;

import java.io.FileNotFoundException;

public class Infect2 {
 static node [] queue=new node[26];//队列里数组node[x,y,step]
 static int head=0;//头指针
 static int tail=0;//尾指针
 static int [][]crodw={
  {1,1,1,1,1},
  {1,1,1,1,1},
  {1,1,1,1,1},
  {1,1,1,1,1},
  {1,1,1,1,1}
 };
 static node curpoint ;//记录出列的node
 static int []Dx={-1,0,1,0};
 static int []Dy={0,1,0,-1};
 static node m; //每次传染起点node元素
 static int count=0;
 static int N=crodw.length;
 public static class node{
  int x;
  int y;
  int step;
  public  node(int x,int y,int step){
   this.x=x;
   this.y=y;
   this.step=step;
  }
 }
 //进
 public static void inqueue(node n){
  queue[tail++]=n;  
 }
 //出
 public static node dequeue(){
  node ret=queue[head];
  head++;
  return ret; 
 }
 public static void main(String[] args) throws FileNotFoundException {
   crodw[0][3]=2;
  m=new node (0,0,crodw[0][3]);
  inqueue(m);
  infect();
  System.out.println("共传染人数:"+(count+1));
  System.out.println("用时间"+(curpoint.step-1));
  
 }
 public static void infect(){
  if(head<tail){
   curpoint=dequeue();//出列node
   int x=curpoint.x;
   int y=curpoint.y;
   for(int i=0;i<4;i++){
    int dx=x+Dx[i];
    int dy=y+Dy[i];
    if(dx>=0&&dx<N&&dy<N&&dy>=0){
     if(crodw[dx][dy]==1){
      crodw[dx][dy]=2;
      node n=new node (dx,dy,curpoint.step+1);//满足传染的node
      inqueue(n);//入列
      count++;
     }
    }
   } 
   infect();
  }
 }


}

、、input

0 1 0 1 1 0 0 0
0 1 0 0 0 0 0 1
0 0 0 1 0 0 0 0
0 1 0 1 1 0 0 0
0 1 0 1 1 1 0 1
0 0 0 1 1 1 1 0
1 0 0 0 1 0 0 1
0 1 0 1 0 0 1 0

、、output

共传染人数:25
用时间9


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值