3]. Competitive Programming/09]. InterviewBit/1]. Programming/14]. Dynamic Programming/MatrixDP/Java/UniquePathsInGrid.java
public class Solution {
    public int uniquePathsWithObstacles(int[][] a) {
        int n=a.length;
        int m=a[0].length;
         int[][] dp=new int[n+1][m+1];
            if(a[0][0]==1||a[n-1][m-1]==1){
                dp[0][0]=0;
                return 0;
            }
            else
                dp[0][0]=1;
            for(int i=1;i<m;i++){
                if(a[0][i]==1)
                    dp[0][i]=0;
                else
                    dp[0][i]=dp[0][i-1];
            }
             for(int i=1;i<n;i++){
                if(a[i][0]==1)
                    dp[i][0]=0;
                else
                    dp[i][0]=dp[i-1][0];
            }
            
            for(int i=1;i<n;i++){
                for(int j=1;j<m;j++){
                    if(a[i][j]!=1)
                    dp[i][j]=(dp[i-1][j]+dp[i][j-1]);
                    else
                        dp[i][j]=0;
                    // System.out.print(dp[i][j]);
                }
                // System.out.println();
            }
            // if(a[0][0]==-100||a[n-1][m-1]==-100)
            //     System.out.println(0);
            // else
            return(dp[n-1][m-1]);
        
    }
}