POJ 2339
#include <iostream> #include <algorithm> #define MAXN 205 using namespace std; char _m[MAXN][MAXN]; char tem[MAXN][MAXN]; bool cmp(char a,char b); int r; int c; void fun(); bool cmp(char a,char b); int main() { //freopen("acm.acm","r",stdin); int i; int j; int test; int a = 0; cin>>test; int time; while(test --) { if(a != 0) cout<<endl; cin>>r>>c>>time; a = 1; for(i = 0; i < r; ++ i) { for(j = 0; j < c; ++ j) { cin>>_m[i][j]; } } for(i = 0; i < r; ++ i) { for(j = 0; j < c; ++ j) { tem[i][j] = _m[i][j]; } } for(i = 0; i < time; ++ i) { fun(); } for(i = 0; i < r; ++ i) { for(j = 0; j < c; ++ j) { cout<<_m[i][j]; } cout<<endl; } } } void fun() { int i; int j; for(i = 0; i < r; ++ i) { for(j = 0; j < c; ++ j) { if(i + 1 < r) { if(cmp(_m[i+1][j],_m[i][j])) { tem[i][j] = _m[i+1][j]; continue; } } if(j + 1 < c) { if(cmp(_m[i][j+1],_m[i][j])) { tem[i][j] = _m[i][j+1]; continue; } } if(i - 1 >= 0) { if(cmp(_m[i-1][j],_m[i][j]) ) { tem[i][j] = _m[i-1][j]; continue; } } if(j - 1 >= 0) { if(cmp(_m[i][j-1],_m[i][j])) { tem[i][j] = _m[i][j-1]; continue; } } } } for(i = 0; i < r; ++ i) { for(j = 0; j < c; ++ j) { _m[i][j] = tem[i][j]; } } } bool cmp(char a,char b) { if(a == 'R' && b == 'S') { return true; } else if(a == 'R' && b == 'P') { return false; } else if(a == 'P' && b == 'R') { return true; } else if(a == 'P' && b == 'S') { return false; } else if(a == 'S' && b == 'P') { return true; } else if(a == 'S' && b == 'R') { return false; } return false; }