码迷,mamicode.com
首页 > 其他好文 > 详细

HDU ACM 1057 A New Growth Industry 简单模拟

时间:2015-06-07 09:43:15      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:c   c++   acm   算法   编程   

题意:给一个天数N,求20*20方阵内细菌的变化情况。每次变化加上一个d[k],d数组有给定的16个数。k是某个格子它本身加上它上下左右的四个数。 简单模拟题。

分析:

#include<iostream>
using namespace std;

int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
char den[]=".!X#";
int D[16];
int map[20][20],tmp[20][20];

void Fun()
{
	int i,j,index,d,x,y;

	for(i=0;i<20;i++)
		for(j=0;j<20;j++)
		{
			index=map[i][j];
			for(d=0;d<4;d++)
			{
				x=i+dir[d][0];
				y=j+dir[d][1];
				if(x>=0&&x<20&&y>=0&&y<20)
					index+=map[x][y];
			}
			tmp[i][j]=map[i][j]+D[index];
			if(tmp[i][j]>3) tmp[i][j]=3;
			else if(tmp[i][j]<0) tmp[i][j]=0;
		}
	for(i=0;i<20;i++)
		for(j=0;j<20;j++)
			map[i][j]=tmp[i][j];
}

int main()
{
	int T,day,i,j,k,t;

	cin>>T;
	for(t=1;t<=T;t++)
	{
		cin>>day;
		for(i=0;i<16;i++) cin>>D[i];
		for(i=0;i<20;i++)
			for(j=0;j<20;j++)
				cin>>map[i][j];
		for(k=0;k<day;k++)
			Fun();            //模拟
		for(i=0;i<20;i++)
		{
			for(j=0;j<20;j++)
				cout<<den[map[i][j]];
			cout<<endl;
		}
		if(t<T) cout<<endl;
	}
    return 0;
}


HDU ACM 1057 A New Growth Industry 简单模拟

标签:c   c++   acm   算法   编程   

原文地址:http://blog.csdn.net/a809146548/article/details/46390603

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!