日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【模拟】Biotech

發布時間:2023/12/3 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【模拟】Biotech 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Biotech

題目大意:

有一堆細胞(放電或不放電),當周圍細胞放電個數小于2或大于3時(八個方向),此細胞變為不放電,當周圍細胞放電個數為2時,此細胞不變,當周圍細胞放電個數為3時,此細胞變為放電

原題:

題目描述

Bob 發現了一群有趣的細胞。
這群細胞排列成一個 n × m 的矩陣。每個細胞有兩個狀態:放電狀態和平靜
狀態。它們每秒鐘都會按以下的規則轉換狀態:
首先我們定義,一個細胞的鄰居為它周圍的 8 個細胞。同時設 k 為某一個細
胞的處于放電狀態的鄰居的個數。
若 k < 2,則這個細胞在下一秒因電量不足而變為/保持平靜狀態。
若 k = 2,則這個細胞在下一秒保持原來的狀態。
若 k = 3,則這個細胞在下一秒因得到充足的電量而變為/保持放電狀態。
若 k > 3,則這個細胞在下一秒因過載而變為/保持平靜狀態。
Bob 觀察了這些細胞現在所處于的狀態。他想預測 t 秒后這些細胞的狀態。

輸入

第一行 3 個正整數 n, m, t。
接下來 n 行,每行一個長度為 m、只包含 01 的字符串,表示每個細胞的初
始狀態。‘1’ 表示放電狀態,‘0’ 表示平靜狀態。

輸出

輸出 n 行,每行一個長度為 m、只包含 01 的字符串,表示每個細胞的 t 秒
后的狀態。‘1’ 表示放電狀態,‘0’ 表示平靜狀態。

輸入樣例

4 4 4 0100 0010 1110 0000

輸出樣例

0000 0010 0001 0111

說明

對于 100% 的數據,1 ≤ n, m ≤ 100, 0 ≤ t ≤ 100。

解題思路:

直接模擬即可

代碼:

#include<cstdio> using namespace std; int n,m,t,sum,a[3][105][105]; int const dx[8]={1,1,0,-1,-1,-1,0,1}; int const dy[8]={0,1,1,1,0,-1,-1,-1}; int read()//讀入 {char x=getchar();while (x!='0'&&x!='1') x=getchar();return x-48; } int main() {scanf("%d %d %d",&n,&m,&t);for (int i=1;i<=n;++i)for (int j=1;j<=m;++j)a[0][i][j]=read();for (int tt=1;tt<=t;++tt)for (int i=1;i<=n;++i)for (int j=1;j<=m;++j){sum=0;for (int k=0;k<8;++k)sum+=a[(tt+1)&1][i+dx[k]][j+dy[k]];//尋找周圍細胞if (sum<2||sum>3) a[tt&1][i][j]=0;//三種情況if (sum==3) a[tt&1][i][j]=1;if (sum==2) a[tt&1][i][j]=a[(tt+1)&1][i][j];}for (int i=1;i<=n;++i){for (int j=1;j<=m;++j)putchar(a[t&1][i][j]+48);//輸出putchar(10);} }

總結

以上是生活随笔為你收集整理的【模拟】Biotech的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。