Skip to content

Instantly share code, notes, and snippets.

@anitainfo
Last active May 26, 2020 19:19
Show Gist options
  • Save anitainfo/da3982a13475919555c5ee4e07b5fb9f to your computer and use it in GitHub Desktop.
Save anitainfo/da3982a13475919555c5ee4e07b5fb9f to your computer and use it in GitHub Desktop.
#include<bits/stdc++.h> //biblioteca utilizada
using namespace std;
const int MAXN=1100; //define o valor de MAXN
int v[MAXN][MAXN]; //declara uma matriz com tamanho MAXN x MAXN
int vA[4]={1,0,-1,0}; //declara um vetor 'vA' já com valores na memória
int vB[4]={0,1,0,-1}; //declara um vetor 'vA' já com valores na memória
int main()
{
int L,C,i,j,A,B,lasta=0,lastb=0,cont=0,a,b,k,d=0,la,lb; //declaração de variáveis
scanf("%d %d", &L, &C); //lê a primeira linha de entrada, ou seja, 'L' e 'C'
scanf("%d %d", &A, &B); //lê a segunda linha de entrada, ou seja, 'A' e 'B'
for(i=1; i<=L; i++) //parte 1 do loop para ler todos os números da matriz (nesse caso, ele vai linha por linha)
{
for(j=1; j<=C; j++) //parte 2 do loop para ler todos os números da matriz (nesse caso, ele vai coluna por coluna)
{
scanf("%d", &v[i][j]); //lê o valor (0 ou 1) de uma posição na matriz
}
}
lasta=A; //'lasta' assume o valor de 'A'
lastb=B; //'lastb' assume o valor de 'B'
while(cont<=L*C) //enquanto não checar todos os pontos de uma matriz
{
for(k=0; k<4; k++) //loop para checar os 4 vizinhos
{
d=0; //'d' é zerado
a=lasta+vA[k]; //'a' assume o valor do 'eixo x' de um vizinho
b=lastb+vB[k]; //'b' assume o valor do 'eixo y' de um vizinho
if(a==la && b==lb) //se o vizinho for o vizinho anterior, ou seja, o vizinho que deu origem a esse novo ponto
{
d=1; //'d' assume o valor de 1 para não considerarmos esse vizinho
}
if(v[a][b]==1 && d!=1) //se o vizinho tem valor 1 e não é o vizinho anterior
{
la=lasta; //'la' assume o valor de 'lasta'
lb=lastb; //'lb' assume o valor de 'lastb'
lasta=a; //'lasta' assume o valor de 'a'
lastb=b; //'lastb' assume o valor de 'b'
k=5; //'k' assume o valor de 5 para encerrar esse loop
}
}
cont++; //soma-se 1 a variável cont
}
printf("%d %d", lasta, lastb); //imprimi 'lasta' e 'lastb', ou seja, os pontos das coordenadas x e y, respectivamente da posição final do robô
return 0; //retorna a 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment