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;
}
原文地址:https://www.cnblogs.com/gavinsp/p/4568357.html