网站开发用的框架前端,海报设计 网站,青岛做外贸网站哪家好,青岛胶南做网站的描述
Bart的妹妹Lisa在一个二维矩阵上创造了新的文明。矩阵上每个位置被三种生命形式之一占据#xff1a;石头#xff0c;剪刀#xff0c;布。每天#xff0c;上下左右相邻的不同生命形式将会发生战斗。在战斗中#xff0c;石头永远胜剪刀#xff0c;剪刀永远胜布#…描述
Bart的妹妹Lisa在一个二维矩阵上创造了新的文明。矩阵上每个位置被三种生命形式之一占据石头剪刀布。每天上下左右相邻的不同生命形式将会发生战斗。在战斗中石头永远胜剪刀剪刀永远胜布布永远胜石头。每一天结束之后败者的领地将被胜者占领。
你的工作是计算出n天之后矩阵的占据情况。
输入
第一行包含三个正整数rcn分别表示矩阵的行数、列数以及天数。每个整数均不超过100。 接下来r行每行c个字符描述矩阵初始时被占据的情况。每个位置上的字符只能是RSP三者之一分别代表石头剪刀布。相邻字符之间无空格。
输出
输出n天之后的矩阵占据情况。每个位置上的字符只能是RSP三者之一相邻字符之间无空格。
样例输入
3 3 1
RRR
RSR
RRR样例输出
RRR
RRR
RRR#include stdio.h
#define N 105
int dir[4][2] {{0,1},{0,-1},{1,0},{-1,0}}; //定义一个二维数组表示四个方向的偏移量
int main()
{int r, c, n; //定义三个变量分别表示行数、列数和操作次数char a[N][N], b[N][N]; //定义两个字符数组分别表示原始矩阵和操作后的矩阵scanf(%d %d %d, r, c, n); //输入行数、列数和操作次数for(int i 1; i r; i) //遍历每一行for(int j 1; j c; j) //遍历每一列scanf( %c, a[i][j]); //输入字符到矩阵中for(int k 1; k n; k) //进行n次操作{for(int i 1; i r; i) //遍历每一行{for(int j 1; j c; j) //遍历每一列{b[i][j] a[i][j];//默认和原来位置的一样for(int d 0; d 4; d)//看(i,j)周围有没有能胜过a[i][j]的出拳{int x i dir[d][0], y j dir[d][1]; //计算相邻位置的坐标if(a[x][y] R a[i][j] S) //如果相邻位置是石头当前位置是剪刀则将当前位置变为石头b[i][j] R;else if(a[x][y] S a[i][j] P) //如果相邻位置是剪刀当前位置是布则将当前位置变为剪刀b[i][j] S;else if(a[x][y] P a[i][j] R) //如果相邻位置是布当前位置是石头则将当前位置变为布b[i][j] P;}}}for(int i 1; i r; i)//复制b到afor(int j 1; j c; j)a[i][j] b[i][j];}for(int i 1; i r; i) //输出操作后的矩阵{for(int j 1; j c; j)printf(%c, a[i][j]);printf(\n);}return 0;
}