if(n==1){ return 1;}else if(n==2){ return 2;}int[]dp=new int[n+1];dp[1]=1;dp[2]=2;for(int i=3;i<=n;i++){ dp[i]=dp[i-2]+dp[i-1];}return dp[n];
if(cost.length==2){ return Math.min(cost[0],cost[1]);}int[]dp=new int[cost.length+1];for(int i=2;i<dp.length;i++){ dp[i]=Math.min(dp[i-2]+cost[i-2],dp[i-1]+cost[i-1]);}return dp[dp.length-1];
if(m==1||n==1){ return 1;}int[][]dp=new int[m][n];for(int i=1;i<m;i++){ dp[i][0]=1;}for(int i=1;i<n;i++){ dp[0][i]=1;}for(int i=1;i<m;i++){ for(int j=1;j<n;j++){ dp[i][j]=dp[i-1][j]+dp[i][j-1]; }}return dp[m-1][n-1];
int row=obstacleGrid.length;int col=obstacleGrid[0].length;int[][]dp=new int[row][col];for(int i=0;i<row;i++){ if(obstacleGrid[i][0]==1){ break; }else{ dp[i][0]=1; }}for(int i=0;i<col;i++){ if(obstacleGrid[0][i]==1){ break; }else{ dp[0][i]=1; }}for(int i=1;i<row;i++){ for(int j=1;j<col;j++){ if(obstacleGrid[i][j]==1){ continue; }else{ dp[i][j]=dp[i-1][j]+dp[i][j-1]; } }}return dp[row-1][col-1];
if(n==2){ return 1;}int[]dp=new int[n+1];dp[1]=1;dp[2]=1;for(int i=3;i<=n;i++){ for(int j=1;j<=i/2;j++){ dp[i]=Math.max(Math.max(j*(i-j),j*dp[i-j]),dp[i]); }}return dp[n];
int[]dp=new int[n+1];dp[0]=1;dp[1]=1;for(int i=2;i<=n;i++){ for(int j=0;j<=i-1;j++){ dp[i]+=dp[j]*dp[i-j-1]; }}return dp[n];