16:矩陣剪刀石頭布


16:矩陣剪刀石頭布

總時間限制: 
5000ms
 
內存限制: 
65536kB
描述

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
來源
Waterloo local 2003.01.25
 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 using namespace std;
 5 
 6 char a[110][110],b[110][110];
 7 int n,m,t;
 8 
 9 int main()
10 {
11 cin >> n >> m >> t;
12 for(int i=1;i<=n;i++)
13 for(int j=1;j<=m;j++)
14 {
15 cin>>a[i][j];
16 b[i][j]=a[i][j];
17 }
18 for(int k=1;k<=t;k++)
19 {
20 for(int i=1;i<=n;i++)
21 for(int j=1;j<=m;j++)
22 {
23 if(a[i][j]=='R')
24 {
25 if(a[i-1][j]=='S')b[i-1][j]='R';
26 if(a[i+1][j]=='S')b[i+1][j]='R';
27 if(a[i][j-1]=='S')b[i][j-1]='R';
28 if(a[i][j+1]=='S')b[i][j+1]='R';
29 }
30 if(a[i][j]=='S')
31 {
32 if(a[i-1][j]=='P')b[i-1][j]='S';
33 if(a[i+1][j]=='P')b[i+1][j]='S';
34 if(a[i][j-1]=='P')b[i][j-1]='S';
35 if(a[i][j+1]=='P')b[i][j+1]='S';
36 }
37 if(a[i][j]=='P')
38 {
39 if(a[i-1][j]=='R')b[i-1][j]='P';
40 if(a[i+1][j]=='R')b[i+1][j]='P';
41 if(a[i][j-1]=='R')b[i][j-1]='P';
42 if(a[i][j+1]=='R')b[i][j+1]='P';
43 }
44 }
45 for(int i=1;i<=n;i++)
46 for(int j=1;j<=m;j++)
47 a[i][j]=b[i][j];
48 }
49 for(int i=1;i<=n;i++)
50 {
51 for(int j=1;j<=m;j++)
52 cout << b[i][j];
53 cout << "\n";
54 }
55 return 0;
56 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM