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];