栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

死亡细胞(c++,生命游戏)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

死亡细胞(c++,生命游戏)

给出一个n行n列的01矩阵,它们代表着一个细胞群。每个数字代表一个细胞,数字‘1’代表当前细胞是活的,‘0’代表当前细胞是死的。问题来了:如果一个细胞周围的活细胞小于等于2,那么这个细胞会由于过于孤独而死去,如果它周围的活细胞数大于6,它又会因为营养不足而死去。反之,如果它周围的活细胞数目在3到6之间,那么它就一定是一个活细胞,注意,一个细胞在下一秒是否存活只取决于它周围的活细胞数目,而跟它当前是否存活无关。

输入格式 输入文件名:sheng.in

第一行为正整数n(≤10),接下来n行n列的01矩阵,表示当前细胞的生存情况。

输出格式 输出文件名:sheng.out

一个n行n列的01矩阵,表示下一秒细胞的生存情况。

输入/输出例子1

输入:

5

01010

10101

01010

10101

01010

输出:

00100

01110

11111

01110

00100

#include
using namespace std;
const int cellx[8]={0,1,1,1,0,-1,-1,-1},celly[8]={1,1,0,-1,-1,-1,0,1};       //控制方向 
int min1[15][15],min2[15][15];      //one minute ago and in one minute 
int n;
char c;
int main(){
    freopen("sheng.in","r",stdin);
    freopen("sheng.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++){
    	    cin>>c;             //输入为字符串 
    	    min1[i][j]=c-48;    //将字符串转化为1或0 
        }
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++){
    	    int sum=0;
    	    for(int k=0;k<8;k++)
    	        if(min1[i+cellx[k]][j+celly[k]]) sum++;    //判断周围活细胞个数 
    	    if(sum>2&&sum<=6) min2[i][j]=1;
		    else min2[i][j]=0; 
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++)
            printf("%d",min2[i][j]);
        printf("n");
    }
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1026940.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号