zoj1051 A New Growth Industry

  1. //zoj 1051 A New Growth Industry
  2. //Accepted 1051 C ++ 00:00.00 388K
  3. #include <stdio.h>
  4. #include <string.h>
  5. #define MAXN 20
  6. char ch[]=".!X#";
  7. int dish[MAXN][MAXN],res[MAXN][MAXN];
  8. int day,d[16];
  9. void solve()
  10. {
  11.        int i,j,k;
  12.        scanf ("%d",&day);
  13.        for (k=0; k<16; ++k) scanf ("%d",&d[k]);
  14.        for (i=0; i<MAXN; ++i)
  15.               for (j=0; j<MAXN; ++j)
  16.                      scanf ("%d",&dish[i][j]);
  17.        while (day--){
  18.               for (i=0; i<MAXN; ++i)
  19.                      for (j=0; j<MAXN; ++j){
  20.                             k = dish[i][j];
  21.                             if (i-1>=0) k += dish[i-1][j];
  22.                             if (i+1<MAXN) k += dish[i+1][j];
  23.                             if (j-1>=0) k += dish[i][j-1];
  24.                             if (j+1<MAXN) k += dish[i][j+1];
  25.                             res[i][j] = dish[i][j]+d[k];
  26.                             if (res[i][j]>3) res[i][j] = 3;
  27.                             if (res[i][j]<0) res[i][j] = 0;
  28.                      }
  29.               memcpy (dish,res,sizeof(dish));
  30.        }
  31.        for (i=0; i<MAXN; ++i){
  32.               for (j=0; j<MAXN; ++j)
  33.                      printf ("%c",ch[dish[i][j]]);
  34.               printf ("/n");
  35.        }
  36. }
  37. int main()
  38. {
  39. #ifdef ONLINE_JUDGE
  40. #else
  41.        freopen("1051.txt","r",stdin);
  42. #endif
  43.        int t;
  44.        while (scanf("%d",&t)!=EOF)
  45.               while (t--){
  46.                      solve();
  47.                      if (t) printf ("/n");
  48.               }
  49. #ifdef ONLINE_JUDGE
  50. #else
  51.        fclose(stdin);
  52. #endif
  53.        return 0;
  54. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值