#include #include #include #define NMAX 102 #define AMAX 4 #define ARMAX 21 #define RMAX 901 int n, maior=0; char matriz[NMAX][NMAX]; char nRomano[RMAX][ARMAX]; void decimalParaRomano(int decimal) { char nr[ARMAX]; int tnr=0; int i, j; int num=decimal; int resto; int algarismos[AMAX]; int tam; memset(nr, '\0', sizeof(nr)); for (i=0; num/10>0; i++) { algarismos[i]=num%10; num/=10; } algarismos[i]=num; tam=i; for (i=tam; i>=0; i--) { if (i==2) { if (algarismos[i]>=5) { nr[tnr++]='D'; for (j=0; j=5) { nr[tnr++]='L'; for (j=0; j=5) { nr[tnr++]='V'; for (j=0; j-1) { letraEsperada=nRomano[numeroEsperado][posicaoNumero]; } if (letraEsperada=='\0') { letraEsperada='.'; ne=numeroEsperado+1; pn=0; } if (matriz[x-1][y]==letraEsperada) { vaiParaPonto(x-1, y, ne, pn); c=1; } if (matriz[x+1][y]==letraEsperada) { vaiParaPonto(x+1, y, ne, pn); c=1; } if (matriz[x][y-1]==letraEsperada) { vaiParaPonto(x, y-1, ne, pn); c=1; } if (matriz[x][y+1]==letraEsperada) { vaiParaPonto(x, y+1, ne, pn); c=1; } if (!c) { ne--; if (ne>maior) { maior=ne; } } } int main() { int i, j; int centro; for (i=1; i<900; i++) { decimalParaRomano(i); } scanf("%d", &n); for (i=1; i<=n; i++) { for (j=1; j<=n; j++) { scanf(" %c", &matriz[i][j]); } } centro=(n+1)/2; vaiParaPonto(centro, centro, 1, 0); printf("%d\n", maior); return 0; }