Pagini recente » Cod sursa (job #586132) | Cod sursa (job #2374723) | Borderou de evaluare (job #1388049) | Borderou de evaluare (job #2072012) | Cod sursa (job #135157)
Cod sursa(job #135157)
#include<iostream.h>
#include<fstream.h>
char a[5][5];
int b[5][5],c[5][5],n,m,nr,xj,yj,xr,yr;
const int vi[8]={-1,-1,-1,0,1,1,1,0};
const int vj[8]={-1,0,1,1,1,0,-1,-1};
ifstream fin("RJ.in");
ofstream fout("RJ.out");
void citire(){
fin>>n>>m;
char c[105];
fin.getline (c,105);
for (int i=1;i<=n;i++)
{
fin.getline (c,105);
for (int j=0;j<m;j++)
{
a[i][j+1]=c[j];
if (c[j]=='R')
{
xr=i;
yr=j+1;
a[i][j+1]=' ';
}
else
if (c[j]=='J')
{
xj=i;
xj=j+1;
a[i][j+1]=' ';
}
}
}
}
void bordare(){
for(int i=0;i<=m;i++){
a[0][i]=-3;
a[m][i]=-3;
}
for(i=0;i<=n;i++){
a[i][0]=-3;
a[i][n]=-3;
}
}
void copie () {
for(int i=0;i<=n;i++)
for(int j=0;j<=m;j++)
b[i][j]=a[i][j];
}
void lee (int x,int y,int d[5][5]) {
int r[10000],ji[10000];
r[0]=x;
ji[0]=y;
nr=1;
for(int k=0;k<nr;k++) {
for(int j=0;j<8;j++)
if(d[r[k]+vi[j]][ji[k]+vj[j]]==0&&a[r[k]+vi[j]][ji[k]+vj[j]]==' ') {
d[r[k]+vi[j]][ji[k]+vj[j]]=d[r[k]][ji[k]]+1;
r[nr]=r[k]+vi[j];
ji[nr]=r[k]+vj[j];
nr++;
}
}
}
void afisare (int e[5][5]) {
for(int i=0;i<=n;i++) {
for(int j=0;j<=m;j++)
cout<<e[i][j]<<" ";
cout<<endl;
}
}
void main() {
citire();
n++;
m++;
//afisare(a);
bordare();
//copie();
lee(xr,yr,b);
lee(xj,yj,c);
//afisare(a);
//cout<<endl;
afisare(b);
int pi,pj,min=1000000;
for(int i=1;i<n;i++)
for(int j=1;j<n;j++)
if(a[i][j]==b[i][j]&&a[i][j]>-1)
if(min>a[i][j]){
min=a[i][j];
pi=i;
pj=j; }
fout<<min<<" "<<pi<<" "<<pj;
fout.close();
}