hdu1057
#include <iostream>
#include <string>
#include <cstring>
using namespace std; int dir[4][2]={{0,-1},{0,1},{-1,0},{1,0}};
int mat[20][20],tar[20][20],tar2[20][20];
char transtar[20][20];
int pxvalue[16]; int main()
{
int testcase;
cin>>testcase;
for(int s=1;s<=testcase;s++)
{
memset(mat,0,sizeof(mat));
memset(tar,0,sizeof(tar));
memset(pxvalue,0,sizeof(pxvalue));
int day,tmp,tmpx,tmpy;
cin>>day; for(int i=0;i<16;i++)
{
cin>>pxvalue[i];
} for(int i=0;i<20;i++)
{
for(int j=0;j<20;j++)
{
cin>>mat[i][j];
}
} for(int k=0;k<day;k++)
{
for(int i=0;i<20;i++)
{
for(int j=0;j<20;j++)
{
tmp=mat[i][j];
for(int z=0;z<4;z++)
{
tmpx=i+dir[z][0];
tmpy=j+dir[z][1];
if(tmpx>=0 && tmpx<20 && tmpy>=0 && tmpy<20)
tmp+=mat[tmpx][tmpy];
} tar[i][j] = mat[i][j]+pxvalue[tmp]; if(tar[i][j]>3)
tar[i][j]=3;
if(tar[i][j]<0)
tar[i][j]=0;
}
}
memcpy(mat,tar,sizeof(mat)); //滚动更新,重中之重
} for(int i=0;i<20;i++)
{
for(int j=0;j<20;j++)
{
if(tar[i][j]==0)
{
transtar[i][j]='.';
}
else if(tar[i][j]==1)
{
transtar[i][j]='!';
}
else if(tar[i][j]==2)
{
transtar[i][j]='X';
}
else if(tar[i][j]==3)
transtar[i][j]='#';
}
} for(int i=0;i<20;i++)
{
for(int j=0;j<20;j++)
{
cout<<transtar[i][j];
}
cout<<endl;
}
if(s!=testcase)
cout<<endl; }
return 0;
}
hdu1057的更多相关文章
- ACM训练计划建议(写给本校acmer,欢迎围观和指正)
ACM训练计划建议 From:freecode# Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...
- ACM训练计划建议(转)
ACM训练计划建议 From:freecode# Date:2015/5/20 前言: 老师要我们整理一份训练计划给下一届的学弟学妹们,整理出来了,费了不少笔墨,就也将它放到博客园上供大家参考. 菜 ...
随机推荐
- [算法]K-SUM problem
一.Two Sum Given an array of integers, find two numbers such that they add up to a specific target nu ...
- Nginx/Apache下如何禁止指定目录运行PHP脚本
下面和大家一起分享下如何在Apache和Nginx禁止上传目录里PHP的执行权限. Apache下禁止指定目录运行PHP脚本 在虚拟主机配置文件中增加php_flag engine off指令即可,配 ...
- mysql分区partition
分区后 会产生多个 数据存储文件MYD,MYI ,把内容读取分散到多个文件上,这样减少并发读取,文件锁的概率,提高IO === 水平分区的几种模式:===1. Range(范围) – 这种模式允许DB ...
- javascript的40个网页常用小技巧
下面是javascript的40个网页常用小技巧,对网站开发人员相信会有帮助.1. oncontextmenu="window.event.returnValue=false" 将 ...
- jQuery应用之eraser.js使用,实现擦除、刮刮卡效果
jquery.eraser是一款使用鼠标或触摸的动作来擦除画布显示真正图片的插件.jquery.eraser插件的原理是用一个画布遮住图片,然后根据触摸或鼠标输入来擦除画布显示图片,您可以在参数中指定 ...
- css 盒子模型 以及 box-sizing属性
在标准的盒子模型下,css中 width,padding以及border的关系 关于css中的width和padding以及border的关系. 在css中,width和height指的是内容区域的宽 ...
- maven 3.2.5 的安装及简单示例
http://www.mvnrepository.com 一直没有使用maven,它的作用就不说了,这二天需要用到,发现网上都是以前的版本,所以,我一边配置,一边记录. 一 下载maven 现在很多I ...
- PHP基于单例模式编写PDO类的方法
一.单例模式简介 简单的说,一个对象(在学习设计模式之前,需要比较了解面向对象思想)只负责一个特定的任务: 二.为什么要使用PHP单例模式? 1.php的应用主要在于数据库应用, 所以一个应用中会存在 ...
- 防止未登录用户操作—struts2拦截器简单实现(转)
原文地址:http://blog.csdn.net/zhutulang/article/details/38351629 尊重原创,请访问原地址 一般,我们的web应用都是只有在用户登录之后才允许操作 ...
- FFMPEG内存操作(二)从内存中读取数及数据格式的转换
相关博客列表: FFMPEG内存操作(一) avio_reading.c 回调读取数据到内存解析 FFMPEG内存操作(二)从内存中读取数及数据格式的转换 FFmpeg内存操作(三)内存转码器 在雷神 ...