好吧,可能对于各位神犇来说这题也没什么毒性。。但我在这题里面挣扎了很久啊啊啊!!!还是感谢我的同桌教会了我这道题QWQ

问题 M: 细菌的繁殖与扩散

题目描述

在边长为9的正方形培养皿中,正中心位置有m个细菌。假设细菌的寿命仅一天,但每天可繁殖10个后代,而且这10个后代,有两个分布在原来的单元格中,其余的均匀分布在其四周相邻的八个单元格中。求经过n(1≤n≤4)天后,细菌在培养皿中的分布情况。

输入

输入为两个整数,第一个整数m表示中心位置细菌的个数(2 ≤ m ≤ 30),第二个整数n表示经过的天数(1 ≤ n ≤ 4)。

输出

输出九行九列整数矩阵,每行的整数之间用空格分隔。整个矩阵代表n天后细菌在培养皿上的分布情况。

样例输入

2 1

样例输出

0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 2 2 2 0 0 0
0 0 0 2 4 2 0 0 0
0 0 0 2 2 2 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0

首先一定要明白不能只用一个数组做!要用两个数组分工配合!

那个“变化”数组用来干什么呢?因为题目中说其余的均匀分布在其四周相邻的八个单元格中,所以我把这八个方向的位置变化用了一个8行2列的二维数组存起来。因为数组有两列,所以用{}把数字两两括起来进行初始化。这个数组大概是这样的:

细菌在繁殖的过程中会向八个方向扩散,坐标变化像这样:

bh这个数组记录的就是这种变化。到时只要在原细菌的坐标基础上加上这种变化就是新细菌的坐标~

初始化:

调试如图:

中间已经放了2个细菌啦~

关于细菌分裂后的分布规律大家可以自己打几遍草稿。。。我就不细说了,这里可能交代得不太好。。。可以在评论中问我的!

最后只要输出就行啦!

#include<iostream>
#include<cstring>
using namespace std;
int ss[10][10],ss2[10][10],/*ss用来记录+判断,ss2用来搞生育_(:з」∠)_*/bh/*变化*/[8][2]={{-1,0},{1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}};
int main()
{int m,n,d;cin>>m>>n;for (int i=1;i<=9;i++){for (int j=1;j<=9;j++){ss[i][j]=0;ss2[i][j]=0;}}ss[5][5]=m;ss2[5][5]=m;for (int day=1;day<=n;day++)//天数 {for (int i=1;i<=9;i++){for (int j=1;j<=9;j++){if (ss[i][j]>0)//ss数组上的某个位置发现了细菌{for(d=0;d<=7;d++)//当某个细菌繁殖方向不超过8个时(从0到7,会有8个方向)ss2[i+bh[d][0]][j+bh[d][1]]+=ss[i][j];//原坐标加新坐标得到新细菌坐标,它们的值等于“母体”的数量 ss2[i][j]+=ss[i][j];//10x个后代,有原数个分布在原来的单元格中}}}for(int i=1;i<=9;i++) for(int j=1;j<=9;j++) ss[i][j]=ss2[i][j];//b数组繁殖完一次后,a数组负责记录新的生育情况}for (int i=1;i<=9;i++){for (int j=1;j<=9;j++) cout<<ss[i][j]<<' ';   cout<<endl;}return 0;
}

【c++细菌的繁殖与扩散】毒瘤题目的题解与说明相关推荐

  1. OpenJudge NOI 1.8 15:细菌的繁殖与扩散

    [题目链接] OpenJudge NOI 1.8 15:细菌的繁殖与扩散 [题目考点] 1. 二维数组 2. 方向数组 在一个矩阵中,当前位置为(sx, sy),将下一个位置与当前位置横纵坐标的差值记 ...

  2. 15_细菌的繁殖与扩散

    /*Name: 15_细菌的繁殖与扩散Copyright: Author: Date: 29-08-17 10:53Description: 15_细菌的繁殖与扩散 查看 提交 统计 提问 总时间限制 ...

  3. C++_细菌的繁殖与扩散_题解

    题目描述 在边长为9的正方形培养皿中,正中心位置有m个细菌.假设细菌的寿命仅一天,但每天可繁殖10个后代,而且这10个后代,有两个分布在原来的单元格中,其余的均匀分布在其四周相邻的八个单元格中.求经过 ...

  4. 1611:细菌的繁殖与扩散

    描述 在边长为9的正方形培养皿中,正中心位置有m个细菌.假设细菌的寿命仅一天,但每天可繁殖10个后代,而且这10个后代,有两个分布在原来的单元格中,其余的均匀分布在其四周相邻的八个单元格中.求经过n( ...

  5. 算法题-----题目、题解、个人算法、个人思考

    算法题-----题目.题解.个人算法.个人思考,项目说明]这里记录算法题目,这里记录:算法题目简单描述,暂存对于这道题的SK_cache(自己的卡点.自己的思路.自己对这道题的理解,自己的疑问.自己对 ...

  6. 关于程序设计语言实习题目的题解

    1.统计各年龄段人数.N个年龄通过调用随机函数获取,编写函数把0~9岁年龄段的人数放入数组下标[0]中,把10~19岁年龄段的人数放入数组下标[1]中,以此类推,把100~120岁年龄段的人数放入数组 ...

  7. CCF- CSP历年认证考试题目链接+题解总结(持续更新)

    CCF- CSP历年认证考试题目链接+题解总结(持续更新ing) 目录 CCF- CSP历年认证考试题目链接+题解总结(持续更新ing) 202206第26次CCF计算机软件能力认证 202203第2 ...

  8. 计算细菌菌落繁殖时间

    x=eval(input()) y=eval(input()) i=0 z=x while z<=2*x:     z=z*(1+y)     i+=1 print(i)

  9. 蓝桥杯第四届C/C++ B省赛题目及题解

    目录 第一题: 高斯日记 第二题: 马虎的算式 第三题: 第39级台阶 第四题: 黄金连分数 第五题:前缀判断 第六题:三部排序 第七题:错误票据 第八题:翻硬币 第九题:带分数 第十题:连号区间数 ...

最新文章

  1. python安装unittest_python 自动化测试 (一):安装 requests,unittest,HTMLTestRunner
  2. Perhaps you are running on a JRE rather than a JDK?
  3. centos6.5 tar安装mysql_centos6.6安装mysql5.7.9tar包
  4. 第二章:用户登录管理模块
  5. MySQL一个语句查出各种整形占用字节数及最大最小值
  6. Proj.4库的编译及使用
  7. linux中mvn命令的下载与安装
  8. 微信8.0来了,iOS更新及Android内测版来啦(内含内测版下载连接)
  9. 启智树游记题解——逆境中的奇迹
  10. 使用session验证输入的验证码是否正确
  11. elasticsearch-7.2.1启动报错
  12. 区块链技术与应用-BTC
  13. js实现仿微信红包随机分配
  14. 大学计算机基础培训的课程
  15. Elasticsearch集群原理、安装和基本使用
  16. 关于编写“AUTORUN.inf”一点心得!!!
  17. 12. STM32——硬件IIC驱动OLED屏幕显示
  18. 微信小程序授权登录获取用户名和昵称
  19. 盘点国内Android移动广告平台的现状
  20. 对腾讯(QQ)的建议

热门文章

  1. bugku学习2:爆照
  2. 英语写作中“强调”的表达
  3. 大数据技术之Hive SQL题库-中级
  4. Flutter 网络请求会话管理
  5. 这比刷剧还爽 阿里大佬倾力打造Java1658页面试八股文,竟被开源
  6. Image-to-Image Translation with Conditional Adversarial Networks 论文翻译
  7. 景区智慧旅游是什么?景区智慧旅游有什么特点优势?
  8. 2017 • AI芯片元年
  9. JAVA 中toSting() 方法重写
  10. 高盛:维持水滴公司“买入”评级,目标价9.5美元