Skip to content

Commit 7cfe97c

Browse files
committed
688
1 parent 2ee97d7 commit 7cfe97c

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#include <bits/stdc++.h>
2+
using namespace std;
3+
4+
double query(vector<vector<double>>& dp,int N,int i,int j,int K){
5+
6+
if(i<0||i>=N||j<0||j>=N){
7+
return 0;
8+
}
9+
10+
if(dp[N*i+j][K]!=-1){
11+
return dp[N*i+j][K];
12+
}
13+
double ans = 0;
14+
ans+=query(dp,N,i+1,j+2,K-1)
15+
+query(dp,N,i+1,j-2,K-1)
16+
+query(dp,N,i-1,j+2,K-1)
17+
+query(dp,N,i-1,j-2,K-1)
18+
+query(dp,N,i+2,j+1,K-1)
19+
+query(dp,N,i+2,j-1,K-1)
20+
+query(dp,N,i-2,j+1,K-1)
21+
+query(dp,N,i-2,j-1,K-1);
22+
23+
ans/=8;
24+
dp[i*N+j][K] = ans;
25+
return ans;
26+
27+
}
28+
29+
double knightProbability(int N, int K, int r, int c) {
30+
31+
double ans = 0;
32+
33+
vector<vector<double>> dp(625,vector<double>(100));
34+
35+
for(int i=0;i<N*N;i++){
36+
dp[i][0] = 0;
37+
for(int j=1;j<=K;j++){
38+
dp[i][j] = -1;
39+
}
40+
}
41+
42+
dp[r*N+c][0] = 1;
43+
for(int i=0;i<N;i++){
44+
for(int j=0;j<N;j++){
45+
ans+=query(dp,N,i,j,K);
46+
}
47+
}
48+
49+
50+
return ans;
51+
}
52+
53+

0 commit comments

Comments
 (0)