UVa 457 - Linear Cellular Automata

题目:有40个培养皿,每个培养皿中有一个数字(0-9)。最开始时20号中数字为1,其余为0。

每组输入有一个DNA programs(10个数字构成的序列),它决定每个培养皿下个时间的数字。

设培养皿i中的数字为F(i),则下次其中的数字为DNA(F(i-1)+F(i)+F(i+1))

{即,编号为F(i-1)+F(i)+F(i+1)的DNA programs中对应的数字}。

在给定DNA programs的情况下,输出所有培养皿中从第1-50天的数字。

分析:模拟,dp。读完题目,问题也基本解决了,利用数组储存每天每个编号的培养皿中的数字。

直接按照题意模拟即可。F(i,j)=DNA(F(i-1,j-1)+F(i-1,j)+F(i-1,j+1))

说明:输出0-49天的,不是1-50天的,也不是0-50天的数据。

#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>

using namespace std;

int DNA[51][42];
int MAP[10];

int main()
{
	int n;
	while ( ~scanf("%d",&n) )
	for ( int i = 0 ; i < n ; ++ i ) {
		if ( i ) printf("\n");
		for ( int j = 0 ; j < 10 ; ++ j )
			scanf("%d",&MAP[j]);

		memset( DNA, 0, sizeof(DNA) );
		DNA[0][20] = 1;
		for ( int j = 1 ; j < 51 ; ++ j )
			for ( int k = 1 ; k < 41 ; ++ k )
				DNA[j][k] = MAP[DNA[j-1][k-1]+DNA[j-1][k]+DNA[j-1][k+1]];

		for ( int j = 0 ; j < 50 ; ++ j ) {
			for ( int k = 1 ; k < 41 ; ++ k )
				switch ( DNA[j][k] ) {
					case 0 : printf(" ");break;
					case 1 : printf(".");break;
					case 2 : printf("x");break;
					case 3 : printf("W");break;
				}
			printf("\n");
		}
	}
	return 0;
}

UVa 457 - Linear Cellular Automata,布布扣,bubuko.com

时间: 2025-01-15 17:06:51

UVa 457 - Linear Cellular Automata的相关文章

UVa - 457 - Linear Cellular Automata 题解

本题大概题意: 给出一个数组DNA,包含10个数值,如:DNA[10] = {0,1,2,3,,1,2,3,0,1,2}所有数值应该不大于3. 给出一行40个字符的字符串: 空格代表0, '.'代表1,'x'代表2,'W'代表3. 相邻三个数值(或两个数值)相加得到的数作为DNA的下标,然后取DNA数组改下标的数值为新的值.产生新的字符串. 好难说清楚,看原文吧,的确是很难理解的题目: http://uva.onlinejudge.org/index.php?option=com_onlinej

457 - Linear Cellular Automata问题求解

题目描述: 输入: 第一行为有几个案例.第二行空行.下一行为输入的DNA信息DNA[0-9].每一行之间都是一个空行. 输出:一共40个培养基CD[0-40], 最开始只有第20个培养基密度为1,其余全部为零,这是初始条件.  第二天,根据CD[i]=CD[i-1]+CD[i]+CD[i+1]. 培养基i位置密度变化为 DNA[ CD[i] ]. 接下来的50行要输出的是接下来的50天每一天的变化.' '.'.'.'x'.'W'分别代表密度0.1.2.3. 注意输出格式,多个case之间的输出需

UVA 1456 六 Cellular Network

Cellular Network Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Practice UVA 1456 A cellular network is a radio network made up of a number of cells each served by a base station located in the cell. The base sta

uva live 4731 Cellular Network 线性dp

// uva live 4731 // // 状态很好想: // d(i,j)表示前i个网络分为j组所得到的数学期望的最小值 // 转移方程: // d(i,j) = min(d(k,j-1)+cost); // cost由题目给出的条件可知cost = (k+1...i)段的概率和 * i; // // 注意: // 1)肯定概率大的网络分在前面,这样在后面的话,这个大的概率出现在 // 后面的机会就会小.因为每个概率都会至少要算一次,所以先算大的 // 可以尽量减少后面再算大的. // 2

UVA题目分类

题目 Volume 0. Getting Started 开始10055 - Hashmat the Brave Warrior 10071 - Back to High School Physics 10300 - Ecological Premium 458 - The Decoder 494 - Kindergarten Counting Game 414 - Machined Surfaces 490 - Rotating Sentences 445 - Marvelous Mazes

【转载】发个有用的:国际学术期刊会议大排名

Rank Conference Full Name1 OSDI Operating Systems Design and Implementation2 SOSP Symposium on Operating Systems Principles3 SIGCOMM Special Interest Group on Data Communication4 MOBICOM Mobile Computing and Networking5 SIGGRAPH Annual Conference on

Github 的一个免费编程书籍列表

Index Ada Agda Alef Android APL Arduino ASP.NET MVC Assembly Language Non-X86 AutoHotkey Autotools Awk Bash Basic BETA C C# C++ Chapel Cilk Clojure COBOL CoffeeScript ColdFusion Cool Coq D Dart DB2 Delphi / Pascal DTrace Elasticsearch Emacs Erlang F#

计算机类免费电子书共享

列表最早来自stackoverflow上的一个问题:List of freely available programming books 现在在github上进行维护:free-programming-books List of Free Programming Books This list initially was a clone of stackoverflow - List of freely available programming books by George Stocker.

(转)Awesome Courses

Awesome Courses  Introduction There is a lot of hidden treasure lying within university pages scattered across the internet. This list is an attempt to bring to light those awesome courses which make their high-quality material i.e. assignments, lect