zoukankan      html  css  js  c++  java
  • ZOJ 3804 YY's Minions (简单模拟)

     1 /*
     2    题意:一个矩阵中有 n*m个宠物,每一个宠物都有一个状态, 1醒着的,0睡着的
     3    X离开的!如果这个宠物(醒着的)的周围醒着的个数>3 || <2它就会睡着,
     4    如果这个宠物(睡着的)的周围醒着的个数==3就会醒来! 
     5    每一分钟都会有变换一个状态!
     6    其中会有些宠物会在给定的时间内离开! 
     7 */ 
     8 #include<iostream>
     9 #include<cstring>
    10 #include<cstdio>
    11 #include<algorithm>
    12 using namespace std;
    13 
    14 int n, m, f, k;
    15 
    16 char statu[55][55];
    17 int dir[8][2]={1, 0, 0, 1, 0, -1, -1, 0, 1, 1, -1, -1, 1, -1, -1, 1};
    18 int cnt[55][55];//记录[i][j] 周围minions 醒着 的个数 
    19 
    20 int leave[55][55];
    21 
    22 int main(){
    23    int t;  
    24    scanf("%d", &t);
    25    while(t--){
    26          memset(leave, 0, sizeof(leave));
    27       scanf("%d%d%d%d", &n, &m, &f, &k);
    28       for(int i=1; i<=n; ++i)
    29          scanf("%s", statu[i]+1);
    30       while(k--){
    31           int u, v, z;
    32           scanf("%d%d%d", &z, &u, &v);//[u][v]这个宠物在z时间之后离开 
    33           leave[u][v]=z;
    34       }
    35       memset(cnt, 0, sizeof(cnt));
    36       for(int tt=1; tt<=f; ++tt){
    37           for(int i=1; i<=n; ++i)
    38              for(int j=1; j<=m; ++j){
    39                  for(int k=0; k<8; ++k){
    40                     int x=i+dir[k][1];
    41                     int y=j+dir[k][0];
    42                     if(x<1 || y<1 || x>n || y>m) continue;
    43                     if(statu[x][y]=='1')  ++cnt[i][j];
    44                  }
    45              } 
    46           for(int i=1; i<=n; ++i)
    47              for(int j=1; j<=m; ++j){
    48                 if(cnt[i][j]==3 && statu[i][j]=='0')
    49                     statu[i][j]='1';
    50                 else if((cnt[i][j]<2 || cnt[i][j]>3) && statu[i][j]=='1')
    51                     statu[i][j]='0';
    52                     
    53                 if(leave[i][j]==tt)  statu[i][j]='X';//该宠物到达时间后就会离开 
    54                 cnt[i][j]=0;
    55              }
    56       }
    57       for(int i=1; i<=n; ++i)
    58          printf("%s
    ", statu[i]+1); 
    59    } 
    60    return  0;
    61 } 
  • 相关阅读:
    java提高篇(四)-----抽象类与接口
    hdu1004----用java链表实现
    jkfladsdjfkldsa
    Handler_1
    Handler实现线程间的通信2
    Handler实现线程间的通信1
    Handler基本运行机制
    Android线程
    Activity声明周期2
    Activity声明周期1
  • 原文地址:https://www.cnblogs.com/hujunzheng/p/3933902.html
Copyright © 2011-2022 走看看