poj_2339
2015-12-07 00:53
218 查看
解题思路:
利用两个矩阵,一个存储昨天,一个存储今天。
当昨天的S旁边为P的时候,就在今天的矩阵中将P改成S,其他情况,依次类推。
注意的是每更新一次就要把更新后的矩阵当做昨天的矩阵,然后赋值给今天,在进行新的循环
利用两个矩阵,一个存储昨天,一个存储今天。
当昨天的S旁边为P的时候,就在今天的矩阵中将P改成S,其他情况,依次类推。
注意的是每更新一次就要把更新后的矩阵当做昨天的矩阵,然后赋值给今天,在进行新的循环
/* strcpy和memcpy主要有以下3方面的区别。 1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。 2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。 3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy */ #include<iostream> using namespace std; int t,r,k,c,n,i,j; char Y[120][120],T[120][120]; void doit(int i,int j,int ii,int jj) { if(i<0||i>r||j<0||j>c||ii<0||ii>r||jj>c||jj<0) return ; if(Y[i][j]=='R'&&T[ii][jj]=='S') T[ii][jj]='R'; if(Y[i][j]=='S'&&T[ii][jj]=='P') T[ii][jj]='S'; if(Y[i][j]=='P'&&T[ii][jj]=='R') T[ii][jj]='P'; } int main() { cin>>t; while(t--) { cin>>r>>c>>n; for(i=0;i<r;i++) for(j=0;j<c;j++) cin>>Y[i][j]; for (i=0;i<n;i++) { memcpy(T,Y,sizeof(T));//memcpy()是复制函数,void *memcpy( void *dest, const void *src, size_t count );不仅仅是字符串 for (j=0;j<r;j++) for (k=0;k<c;k++) { doit(j,k,j+1,k); doit(j,k,j-1,k); doit(j,k,j,k+1); doit(j,k,j,k-1); } memcpy(Y,T,sizeof(T)); } for(i=0;i<r;i++) { for(j=0;j<c;j++) { if(j==c-1) cout<<T[i][j]<<endl; else cout<<T[i][j]; } } } return 0; }
相关文章推荐
- 戒烟
- Java计算1-n个数阶乘的和
- 戒烟
- JAVA的ByteArrayOutputStream
- image recognition(图像识别的API参考网址)以及caffe参考网址
- 杨小麦OC之旅--RunLoop&&NSTimer
- finger用户名、主目录、停滞时间、登录时间
- 【Html】包含(后代)选择器
- finger用户名、主目录、停滞时间、登录时间
- Servlet 学习总结(下)
- 由Handler引起内存泄露引发的java类设计思考
- JAVA简单的文件I/O操作实例
- 浏览器插件-ActiveX
- Beta任务项录入
- 正则表达式的使用
- jboss5+EJB3+MDB Queue
- 栈和队列之用java实现栈
- Linux下Python3.4.3安装
- malloc一次性最大能申请多大内存空间
- 【Html】子选择器