Original title
Code implementation (first brush timeout)
int sum;
void visit(int N,int K,int r,int t,int times)
{
if(times <= K)
{
if(r>=0 && r<=N-1 && t>=0 && t<=N-1)
{
if(times < K)
{
visit(N,K,r+2,t+1,times+1);
visit(N,K,r-2,t-1,times+1);
visit(N,K,r+2,t-1,times+1);
visit(N,K,r-2,t+1,times+1);
visit(N,K,r+1,t+2,times+1);
visit(N,K,r-1,t+2,times+1);
visit(N,K,r-1,t-2,times+1);
visit(N,K,r+1,t-2,times+1);
}
else
sum++;
}
}
}
double knightProbability(int N, int K, int r, int c){
sum = 0;
visit(N,K,r,c,0);
return (double)sum/pow(8,K);
}