UVa 10443 Rock, Scissors, Paper

 1  #include <stdio.h>
 2  #include <stdlib.h>
 3  #include <iostream>
 4  #include <algorithm>
 5  #include <string.h>
 6  #include <map>
 7  using namespace std;
 8  char arr[105][105];
 9  int w,l,n;
10  char check(int i,int j)
11  {
12      if(arr[i][j]=='R')
13      {
14          if(i>0 && arr[i-1][j]=='P') return 'P';
15          else if(j>0 && arr[i][j-1]=='P') return 'P';
16          else if(i<w-1 && arr[i+1][j]=='P') return 'P';
17          else if(j<l-1 && arr[i][j+1]=='P') return 'P';
18          else return 'R';
19      }
20      else if(arr[i][j]=='S')
21      {
22          if(i>0 && arr[i-1][j]=='R') return 'R';
23          else if(j>0 && arr[i][j-1]=='R') return 'R';
24          else if(i<w-1 && arr[i+1][j]=='R') return 'R';
25          else if(j<l-1 && arr[i][j+1]=='R') return 'R';
26          else return 'S';
27 
28      }
29      else if(arr[i][j]=='P')
30      {
31          if(i>0 && arr[i-1][j]=='S') return 'S';
32          else if(j>0 && arr[i][j-1]=='S') return 'S';
33          else if(i<w-1 && arr[i+1][j]=='S') return 'S';
34          else if(j<l-1 && arr[i][j+1]=='S') return 'S';
35          else return 'P';
36 
37      }
38  }
39  int main()
40  {
41      int cas;
42      cin>>cas;
43      while(cas--)
44      {
45          char ans[105][105];
46          cin>>w>>l>>n;
47          for(int i=0; i<w; i++)
48          {
49              for(int j=0; j<l; j++)
50              {
51                  cin>>arr[i][j];
52              }
53          }
54          for(int i=0; i<n; i++)
55          {
56              for(int j=0; j<w; j++)
57              {
58                  for(int k=0; k<l; k++)
59                  {
60                      char tmp;
61                      if(tmp=check(j,k))
62                      {
63                          ans[j][k]=tmp;
64                      }
65                  }
66              }
67              memcpy(arr,ans,sizeof(ans));
68          }
69          for(int i=0; i<w; i++)
70          {
71              for(int j=0; j<l; j++)
72              {
73                  cout<<arr[i][j];
74              }
75              cout<<endl;
76          }
77          if(cas) cout<<endl;
78      }
79      return 0;

80  }

留言

這個網誌中的熱門文章

UVa 12970 Alcoholic Pilots

UVa 10278 Fire Station