在线编程在线课堂在线测评Anycodes在线编程

编程论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

How to use bs4??
本帖最后由 carry0987 于
Double Queue 问题描述 : The new founded Balkan Investment Group Bank (
John 问题描述 : Little John is playing very funny game
linux-command Linux命令大全搜索工具,内容包含Linux命令
Coati 是一款跨平台的代码查看工具,适用于 C/C++ 和 Java。商业软件。特性:1. 索引
系统可承载海量并发,消息收发确认机制 保障消息必达 系统采用动态智
全平台视频监控,支持安卓苹果以及pcweb,支持海康大华等主流dvr,全部源码以及文档 单聊、群聊、商
如何访问类的私有属性? 下面以 TPathData 为例,
问题:从 XE4 以来,Firemonkey 曲线绘图在移动平台不平滑的问题一直令人诟病,提交到官方的 QC 也是族繁不及备载,官方似乎有意的
操作数据库(RODBC)   odbcConnect(dsn, uid="", p
数据模式:mode函数显示任何对象的模式。常见的单个的
系统可承载海量并发,消息收发确认机制 保障消息必达 系统采用动态智
RabbitMQ与PHP(一) 项
Iease团队扩编预备中,盼望能有Ruby或者java工程师加盟。全职兼职都可以。有爱好的伴侣请与我接洽。 邮件:i
ruby 怎么设置装备摆设GTK2,求教指导下!
#include #include #include #include using namespace std; int main() {
标题如图所示: 有n盏灯,编号1~n。一开端灯都是关着的
成熟的消息收发确认机制,支持万人大群 支持开发自定义的消息sdk接口,扩展性超强 支持单/
成熟的消息收发确认机制,支持万人大群 支持开发自定义的消息sdk接口,扩展性超强 支持单/
1. 注意列表和集合的区别 set 列表表现形式: list_1
Ajax   Ajax即“Asynchronous Javascript And
大师好,我比来在做布谷鸟优
分辨提取A和B图像Harris角点,接下来须要对

[HDU杭电] HDU 1057 A New Growth Industry-模拟-[解题报告] C++

[复制链接]
发表于 2016-3-25 22:13:46 | 显示全部楼层 |阅读模式
A New Growth Industry


问题描述 :

HDU 1057 A New Growth Industry-模拟-[解题报告] C++

HDU 1057 A New Growth Industry-模拟-[解题报告] C++
A biologist experimenting with DNA modification of bacteria has found a way to make bacterial colonies sensitive to the
surrounding population density. By changing the DNA, he is able to “program” the bacteria to respond to the varying densities in their immediate neighborhood. The culture dish is a square, divided into 400 smaller squares (20×20). Population in each small square is measured on a four point scale (from 0 to 3). The DNA information is represented as an array D, indexed from 0 to 15, of integer values and is interpreted as follows: In any given culture dish square, let K be the sum of that square’s density and the densities of the four squares immediately to the left, right, above and below that square (squares outside the dish are considered to have density 0). Then, by the next day, that dish square’s density will change by D[K] (which may be a positive, negative, or zero value). The total density cannot, however, exceed 3 nor drop below 0. Now, clearly, some DNA programs cause all the bacteria to die off (e.g., [-3, -3, …, -3]). Others result in immediate population explosions (e.g., [3,3,3, …, 3]), and others are just plain boring (e.g., [0, 0, … 0]). The biologist is interested in how some of the less obvious DNA programs might behave. Write a program to simulate the culture growth, reading in the number of days to be simulated, the DNA rules, and the initial population densities of the dish.
输入:
Input to this program consists of three parts: 1. The first line will contain a single integer denoting the number of days to be simulated. 2. The second line will contain the DNA rule D as 16 integer values, ordered from D[0] to D[15], separated from one another by one or more blanks. Each integer will be in the range -3…3, inclusive. 3. The remaining twenty lines of input will describe the initial population density in the culture dish. Each line describes one row of squares in the culture dish, and will contain 20 integers in the range 0…3, separated from one another by 1 or more blanks.  
输出:
The program will produce exactly 20 lines of output, describing the population densities in the culture dish at the end of the simulation. Each line represents a row of squares in the culture dish, and will consist of 20 characters, plus the usual end-of-line terminator. Each character will represent the population density at a single dish square, as follows:

HDU 1057 A New Growth Industry-模拟-[解题报告] C++

HDU 1057 A New Growth Industry-模拟-[解题报告] C++
No other characters may appear in the output.
样例输入:

  1. 1

  2. 2
  3. 0 1 1 1 2 1 0 -1 -1 -1 -2 -2 -3 -3 -3 -3
  4. 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  5. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  6. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  7. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  8. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  9. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  10. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  11. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  12. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  13. 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0
  14. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  15. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  16. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  17. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  18. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  19. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  20. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  21. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  22. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  23. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
复制代码
样例输出:

  1. ##!.................
  2. #!..................
  3. !...................
  4. ....................
  5. ....................
  6. ....................
  7. ....................
  8. .........!..........
  9. ........!#!.........
  10. .......!#X#!........
  11. ........!#!.........
  12. .........!..........
  13. ....................
  14. ....................
  15. ....................
  16. ....................
  17. ....................
  18. ....................
  19. ....................
  20. ....................
复制代码
来源:点击打开链接非常不错的一道模拟题,看起来足够复杂。一定要读懂题意,尤其是天数与那个数组,其实没有直接的关系,只与DNA更新的次数有关,这里wa了一天。。。ORZ想做模拟的可以试试。
  1. #include <iostream>
  2. #include <string>
  3. #include <cstring>
  4. using namespace std;

  5. int dir[4][2]={{0,-1},{0,1},{-1,0},{1,0}};
  6. int mat[20][20],tar[20][20],tar2[20][20];
  7. char transtar[20][20];
  8. int pxvalue[16];

  9. int main()
  10. {
  11.         int testcase;
  12.         cin>>testcase;
  13.         for(int s=1;s<=testcase;s++)
  14.         {
  15.                 memset(mat,0,sizeof(mat));
  16.                 memset(tar,0,sizeof(tar));
  17.                 memset(pxvalue,0,sizeof(pxvalue));
  18.                 int day,tmp,tmpx,tmpy;
  19.                 cin>>day;
  20.                
  21.                 for(int i=0;i<16;i++)
  22.                 {
  23.                         cin>>pxvalue[i];
  24.                 }
  25.                
  26.                 for(int i=0;i<20;i++)
  27.                 {
  28.                         for(int j=0;j<20;j++)
  29.                         {
  30.                                 cin>>mat[i][j];
  31.                         }
  32.                 }
  33.                
  34.                 for(int k=0;k<day;k++)
  35.                 {
  36.                         for(int i=0;i<20;i++)
  37.                         {
  38.                                 for(int j=0;j<20;j++)
  39.                                 {
  40.                                         tmp=mat[i][j];
  41.                                         for(int z=0;z<4;z++)
  42.                                         {
  43.                                                 tmpx=i+dir[z][0];
  44.                                                 tmpy=j+dir[z][1];
  45.                                                 if(tmpx>=0 && tmpx<20 && tmpy>=0 && tmpy<20)
  46.                                                         tmp+=mat[tmpx][tmpy];
  47.                                         }
  48.                            
  49.                     tar[i][j] = mat[i][j]+pxvalue[tmp];   
  50.                                        
  51.                                         if(tar[i][j]>3)
  52.                                                 tar[i][j]=3;
  53.                                         if(tar[i][j]<0)
  54.                                                 tar[i][j]=0;
  55.                                 }
  56.                         }
  57.                         memcpy(mat,tar,sizeof(mat));    //滚动更新,重中之重
  58.                 }
  59.                
  60.                 for(int i=0;i<20;i++)
  61.                 {
  62.                         for(int j=0;j<20;j++)
  63.                         {
  64.                                 if(tar[i][j]==0)
  65.                                 {
  66.                                         transtar[i][j]='.';
  67.                                 }
  68.                                 else if(tar[i][j]==1)
  69.                                 {
  70.                                         transtar[i][j]='!';
  71.                                 }
  72.                                 else if(tar[i][j]==2)
  73.                                 {
  74.                                         transtar[i][j]='X';
  75.                                 }
  76.                                 else if(tar[i][j]==3)
  77.                                         transtar[i][j]='#';
  78.                         }
  79.                 }
  80.                
  81.                 for(int i=0;i<20;i++)
  82.                 {
  83.                         for(int j=0;j<20;j++)
  84.                         {
  85.                                 cout<<transtar[i][j];
  86.                         }
  87.                         cout<<endl;
  88.                 }
  89.                 if(s!=testcase)
  90.                         cout<<endl;
  91.                
  92.         }
  93.         return 0;
  94. }
复制代码
在线编程(http://www.anycodes.cn)&编程论坛(http://www.52exe.cn)感谢您的支持!
回复

使用道具 举报

发布主题 上个主题 下个主题 快速回复 返回列表 官方QQ群
在线客服
客 服 中 心
群 机 器 人
网站二维码
收 起 客 服

QQ|Archiver|手机版|小黑屋|Anycodes ( ICP14002806Anycodes在线编程

GMT+8, 2018-11-22 01:05 , Processed in 1.749039 second(s), 71 queries .

Powered by Anycodes

© 2001-2013 吉林市群龙科技有限公司 Inc.

快速回复 返回顶部 返回列表