北大2339题

来源:互联网 发布:淘宝海外购物怎么处理 编辑:程序博客网 时间:2024/05/17 01:53

 题目链接:http://acm.pku.edu.cn/JudgeOnline/problem?id=2339

需要用到一个辅助数组存储一天后的战况,并且要及时更新原局势。

#include <iostream>
using namespace std;

#define MAX 100

bool Win(char a,char b)
{
 if(a == 'R' && b == 'S')
  return true;
 if(a == 'S' && b == 'P')
  return true;
 if(a == 'P' && b == 'R')
  return true;

 return false;
}

int main()
{
 freopen("in.txt","r",stdin);

 char res[MAX][MAX],map[MAX][MAX];
 int i,j,k,t,r,c,n,x,y,move[4][2];
 move[0][0] = 1,move[0][1] = 0;
 move[1][0] = -1,move[1][1] = 0;
 move[2][0] = 0,move[2][1] = 1;
 move[3][0] = 0,move[3][1] = -1;
 cin >> t;
 while(t--)
 {
  cin >> r >> c >> n;
  for(i = 0;i < r;++i)
  {
   for(j = 0;j < c;++j)
   {
    cin >> map[i][j];
    res[i][j] = map[i][j];
   }
  }

  while(n--)
  {
   for(i = 0;i < r;++i)
   {
    for(j = 0;j < c;++j)
    {
     for(k = 0;k < 4;++k)
     {
      x = i + move[k][0];
      y = j + move[k][1];

      if(x >= 0 && x < r && y >= 0 && y < c)
      {
       if(Win(map[i][j],map[x][y]))
        res[x][y] = map[i][j];
      }
     }
    }
   }

   for(i = 0;i < r;++i)
   {
    for(j = 0;j < c;++j)
     map[i][j] = res[i][j];
   }
  }

  for(i = 0;i < r;++i)
  {
   for(j = 0;j < c;++j)
    cout << res[i][j];
   cout << endl;
  }
  cout << endl;
 }
 return 0;
}

原创粉丝点击