Răspuns :
#include <fstream>
using namespace std;
int n,m;
char a[51][51]; /// a=ferma
const char liber='.',copac='+',robot='*';
void afism()
{
ofstream g("ferma1.out");
for(int i=1;i<=n;++i)
{
for(int j=1;j<=m;++j)
g<<a[i][j];
g<<'\n';
}
g.close();
}
void deplasareDin(int ir,int jr)
{
if(ir-2>=1) /// sus
if((a[ir-2][jr-1]!=copac)&&(a[ir-2][jr]!=copac)&&(a[ir-2][jr+1]!=copac))
if((a[ir-2][jr-1]==liber)||(a[ir-2][jr]==liber)||(a[ir-2][jr+1]==liber))
{
a[ir-2][jr-1]=a[ir-2][jr]=a[ir-2][jr+1]=robot;
deplasareDin(ir-1,jr);
}
if(ir+2<=n) /// jos
if((a[ir+2][jr-1]!=copac)&&(a[ir+2][jr]!=copac)&&(a[ir+2][jr+1]!=copac))
if((a[ir+2][jr-1]==liber)||(a[ir+2][jr]==liber)||(a[ir+2][jr+1]==liber))
{
a[ir+2][jr-1]=a[ir+2][jr]=a[ir+2][jr+1]=robot;
deplasareDin(ir+1,jr);
}
if(jr-2>=1) /// stanga
if((a[ir-1][jr-2]!=copac)&&(a[ir][jr-2]!=copac)&&(a[ir+1][jr-2]!=copac))
if((a[ir-1][jr-2]==liber)||(a[ir][jr-2]==liber)||(a[ir+1][jr-2]==liber))
{
a[ir-1][jr-2]=a[ir][jr-2]=a[ir+1][jr-2]=robot;
deplasareDin(ir,jr-1);
}
if(jr+2<=m) /// dreapta
if((a[ir-1][jr+2]!=copac)&&(a[ir][jr+2]!=copac)&&(a[ir+1][jr+2]!=copac))
if((a[ir-1][jr+2]==liber)||(a[ir][jr+2]==liber)||(a[ir+1][jr+2]==liber))
{
a[ir-1][jr+2]=a[ir][jr+2]=a[ir+1][jr+2]=robot;
deplasareDin(ir,jr+1);
}
}
int main()
{
int ic=0,jc=0;
ifstream f("ferma1.in");
f>>n>>m;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
f>>a[i][j];
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
if(a[i][j]=='R')
{ic=i; jc=j; break;};
for(int i=-1;i<=1;++i)
for(int j=-1;j<=1;++j)
a[ic+i][jc+j]=robot;
deplasareDin(ic,jc);
afism();
}