动态规划算法9
LeetCode 309 买卖股票的最佳时机含冷冻期 2023.12.14
题目链接 代码随想录讲解[链接]
int maxProfit ( vector< int > & prices) { vector< vector< int >> dp ( prices. size ( ) , vector < int > ( 4 , 0 ) ) ; dp[ 0 ] [ 0 ] = - prices[ 0 ] ; for ( int i = 1 ; i < prices. size ( ) ; i++ ) { dp[ i] [ 0 ] = max ( max ( dp[ i- 1 ] [ 0 ] , dp[ i- 1 ] [ 1 ] - prices[ i] ) , dp[ i- 1 ] [ 3 ] - prices[ i] ) ; dp[ i] [ 1 ] = max ( dp[ i- 1 ] [ 1 ] , dp[ i- 1 ] [ 3 ] ) ; dp[ i] [ 2 ] = dp[ i- 1 ] [ 0 ] + prices[ i] ; dp[ i] [ 3 ] = dp[ i- 1 ] [ 2 ] ; } return max ( max ( dp[ prices. size ( ) - 1 ] [ 1 ] , dp[ prices. size ( ) - 1 ] [ 2 ] ) , dp[ prices. size ( ) - 1 ] [ 3 ] ) ;
}
LeetCode 714 买卖股票的最佳时机含手续费 2023.12.14
题目链接 代码随想录讲解[链接]
int maxProfit ( vector< int > & prices, int fee) { vector< vector< int >> dp ( prices. size ( ) , vector < int > ( 2 , 0 ) ) ; dp[ 0 ] [ 0 ] = - prices[ 0 ] ; for ( int i = 1 ; i < prices. size ( ) ; i++ ) { dp[ i] [ 0 ] = max ( dp[ i- 1 ] [ 0 ] , dp[ i- 1 ] [ 1 ] - prices[ i] ) ; dp[ i] [ 1 ] = max ( dp[ i- 1 ] [ 1 ] , dp[ i- 1 ] [ 0 ] - fee+ prices[ i] ) ; } return dp[ prices. size ( ) - 1 ] [ 1 ] ;
}