Skip to content

Commit 96884db

Browse files
Update Playing_with_chessboard.c
1 parent e1ba6e0 commit 96884db

File tree

1 file changed

+22
-19
lines changed

1 file changed

+22
-19
lines changed

Dynamic-Programming/Playing_with_chessboard.c

+22-19
Original file line numberDiff line numberDiff line change
@@ -26,34 +26,37 @@
2626

2727

2828

29-
// BELOW CODE IS NOT ACTUALLY DONE BY DYNAMIC PROGRAMMING, IT IS A GREEDY TECHNIQUE
3029
#include<stdio.h>
31-
int ans=0;
32-
void find(int n,int a[n+1][n+1],int i,int j,int temp)
30+
int n;
31+
int find(int a[][n],int dp[][n],int i,int j)
3332
{
34-
if(n==i && i==j)
35-
{
36-
if(temp>ans)
37-
ans=temp;
38-
}
33+
if(dp[i][j]!=0)
34+
return dp[i][j];
35+
if(i==0)
36+
return dp[i][j]=a[i][j]+find(a,dp,i,j-1);
37+
if(j==0)
38+
return dp[i][j]=a[i][j]+find(a,dp,i-1,j);
39+
int t1=a[i][j]+find(a,dp,i-1,j);
40+
int t2=a[i][j]+find(a,dp,i,j-1);
41+
if(t1>t2)
42+
dp[i][j]=t1;
3943
else
40-
{
41-
if(i+1<=n)
42-
find(n,a,i+1,j,temp+a[i+1][j]);
43-
if(j+1<=n)
44-
find(n,a,i,j+1,temp+a[i][j+1]);
45-
}
44+
dp[i][j]=t2;
45+
return dp[i][j];
4646
}
4747
int main()
4848
{
49-
int n;
5049
scanf("%d",&n);
51-
int a[n][n];
50+
int a[n][n],dp[n][n];
5251
for(int i=0;i<n;i++)
5352
{
5453
for(int j=0;j<n;j++)
55-
scanf("%d",&a[i][j]);
54+
{
55+
scanf("%d",&a[i][j]);
56+
dp[i][j]=0;
57+
}
5658
}
57-
find(n-1,a,0,0,a[0][0]);
58-
printf("%d",ans);
59+
dp[0][0]=a[0][0];
60+
find(a,dp,n-1,n-1);
61+
printf("%d",dp[n-1][n-1]);
5962
}

0 commit comments

Comments
 (0)