UVa 10443 - Rock
2015-09-18 07:47
465 查看
題目:在一個二維平面上,有三種細胞剪刀、石頭、布,按照正常的遊戲規則想克制;
每個細胞在一個週期內,會吧自己周圍的克制的細胞變成自己,問d天后的圖形。
分析:簡單題,模擬。模擬每天的狀態求出第d天的即可。
計算過程,用一個緩存,防止干擾。
說明:╮(╯▽╰)╭。
每個細胞在一個週期內,會吧自己周圍的克制的細胞變成自己,問d天后的圖形。
分析:簡單題,模擬。模擬每天的狀態求出第d天的即可。
計算過程,用一個緩存,防止干擾。
說明:╮(╯▽╰)╭。
#include <cstring> #include <cstdio> char maps[101][101]; char temp[101][101]; int dxy[4][2] = {0,1, 1,0, -1,0, 0,-1}; int main() { int t, n, m, d; while (~scanf("%d",&t)) while (t --) { scanf("%d%d%d",&n, &m, &d); for (int i = 0; i < n; ++ i) scanf("%s",maps[i]); for (int k = 0; k < d; ++ k) { for (int i = 0; i < n; ++ i) for (int j = 0; j < m; ++ j) temp[i][j] = maps[i][j]; for (int i = 0; i < n; ++ i) for (int j = 0; j < m; ++ j) for (int p = 0; p < 4; ++ p) { int x = i + dxy[p][0]; int y = j + dxy[p][1]; if (x < 0 || x >= n || y < 0 || y >= m) continue; if (maps[x][y] == 'S' && maps[i][j] == 'P') temp[i][j] = 'S'; if (maps[x][y] == 'P' && maps[i][j] == 'R') temp[i][j] = 'P'; if (maps[x][y] == 'R' && maps[i][j] == 'S') temp[i][j] = 'R'; } for (int i = 0; i < n; ++ i) for (int j = 0; j < m; ++ j) maps[i][j] = temp[i][j]; } for (int i = 0; i < n; ++ i) puts(maps[i]); if (t) puts(""); } return 0; }
相关文章推荐
- 如何在没有安装微软Excel环境下操作Excel文件?
- C++Primer第五版 10.2.3节练习
- C++Primer第五版 10.2.2节练习
- C++Primer第五版 10.2.1节练习
- C++Primer第五版 10.1节练习
- 算法练习 之0918
- C++Primer第五版 第9章 顺序容器(练习解答)
- java中Collection 与Collections的区别
- vim configures for normal work
- 以销售角度看Android学习
- Linux计划任务
- 设计模式之模板方法
- 【读书笔记】--代码整洁之道
- 使用GCD
- 对于Oracle中分页排序查询语句执行效率的比较分析
- KDE 桌面环境现在已经有接近 5000 个图标了
- C++Primer第五版 9.6节练习
- C++Primer第五版 9.5.5节练习
- C++Primer第五版 9.5.3节练习
- 26条深度学习经验