per risolvere questo problema ho pensato di usare la ricorsione ma vado fuori tempo di 0.1 sec per tutte le subtask, consigli per ottimizzare?
#include <iostream>
#include <stdio.h>
using namespace std;
int mappa (int n,char p[][100], int s,int r, int c){
if (r==n-1 and c==n-1){
return s+1; //basecase
}
if (p[r+1][c+1]=='*' and r<n-1 and c<n-1){ //diagonale alta dx
return mappa(n,p,s+1,r+1,c+1);
}
if (p[r+1][c-1]=='*' and r<n-1 and c>0){ //diagonale alta sx
return mappa(n,p,s+1,r+1,c-1);
}
if (p[r+1][c]=='*' and r<n-1){ //alto
return mappa(n,p,s+1,r+1,c);
}
if (p[r-1][c]=='*' and r>0){ //basso
return mappa(n,p,s+1,r-1,c);
}
if (p[r][c+1]=='*' and c<n-1){ //destra
return mappa(n,p,s+1,r,c+1);
}
if (p[r][c-1]=='*' and c>0){ //sinistra
return mappa(n,p,s+1,r,c-1);
}
if (p[r-1][c+1]=='*' and r>0 and c<n-1){ //diagonale bassa dx
return mappa(n,p,s+1,r-1,c+1);
}
if (p[r-1][c-1]=='*' and r>0 and c>0){ //diagonale bassa sx
return mappa(n,p,s+1,r-1,c-1);
}
}
int main(){
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
int n,r,c;
cin>>n;
r=0;
c=0;
char p[100][100];
char app;
while (r<n){
cin>>app;
p[r][c]=app;
if (c==n-1){
r++;
c=-1;
}
c++;
}
int conta;
int s=0;
r=0;
c=0;
conta = mappa(n,p,s,r,c);
cout<<conta;
return 0;
}