矩阵剪刀石头布

描述

Bart的妹妹Lisa在一个二维矩阵上创造了新的文明。矩阵上每个位置被三种生命形式之一占据:石头,剪刀,布。每天,上下左右相邻的不同生命形式将会发生战斗。在战斗中,石头永远胜剪刀,剪刀永远胜布,布永远胜石头。每一天结束之后,败者的领地将被胜者占领。

你的工作是计算出n天之后矩阵的占据情况。

输入

第一行包含三个正整数r,c,n,分别表示矩阵的行数、列数以及天数。每个整数均不超过100。
接下来r行,每行c个字符,描述矩阵初始时被占据的情况。每个位置上的字符只能是R,S,P三者之一,分别代表石头,剪刀,布。相邻字符之间无空格。

输出

输出n天之后的矩阵占据情况。每个位置上的字符只能是R,S,P三者之一,相邻字符之间无空格。

样例输入

3 3 1
RRR
RSR
RRR
样例输出
RRR
RRR
RRR
题意
给出矩阵的行数、列数以及天数,输出n天之后的矩阵占据情况。
解题思路
先用第一个for循环输入题目给定矩阵,再用第二个for循环把R,S,P三者与其各上下左右的相邻的不同生命形式发生战斗(石头永远胜剪刀,剪刀永远胜布,布永远胜石头),用一个for循环把b数组复制到a数组,最后用一个for循环输出b数组。
代码实现
#include<bits/stdc++.h>
using namespace std;
char a[110][110],b[110][110];
int n,m,t;
int main(){
	cin>>n>>m>>t;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>a[i][j];//输入给定矩阵
			b[i][j]=a[i][j];//把a数组复制到b数组这样就能解决平局问题
		}
	}
	for(int k=1;k<=t;k++){
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				if(a[i][j]=='R'){//石头永远胜剪刀,所以如果石头其上下左右有一位置是剪刀,那么剪刀的位置将被石头占领,所以输出石头 
					if(a[i-1][j]=='S'){
						b[i-1][j]='R';
					}
				 	if(a[i+1][j]=='S'){
					 	b[i+1][j]='R';
					}
			 		if(a[i][j-1]=='S'){
					 	b[i][j-1]='R';
					}
			 		if(a[i][j+1]=='S'){
					 	b[i][j+1]='R';
					}
				}
				if(a[i][j]=='S'){//剪刀永远胜布,所以如果剪刀其上下左右有一位置是布,那么布的位置将被剪刀占领,所以输出剪刀 
					if(a[i-1][j]=='P'){
						b[i-1][j]='S';
					}
				 	if(a[i+1][j]=='P'){
					 	b[i+1][j]='S';
					}
			 		if(a[i][j-1]=='P'){
					 	b[i][j-1]='S';
					}
			 		if(a[i][j+1]=='P'){
					 	b[i][j+1]='S';
				 	}
				}
				if(a[i][j]=='P'){//布永远胜石头,所以如果布其上下左右有一位置是石头,那么石头的位置将被布占领,所以输出布 
					if(a[i-1][j]=='R'){
						b[i-1][j]='P';
					}
				 	if(a[i+1][j]=='R'){
					 	b[i+1][j]='P';
					}
					if(a[i][j-1]=='R'){
					 	b[i][j-1]='P';
					}
					if(a[i][j+1]=='R'){
					 	b[i][j+1]='P';
				 	}
				}	
			}	
		}
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				a[i][j]=b[i][j];//把b数组复制到a数组
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cout<<b[i][j];//输出b数组
		}
		cout<<endl;//每输出n行,就换行接着输出
	}
	return 0;
}



posted @   Lily0419  阅读(393)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示