class Solution {
public:
int rob ( vector< int > & nums)
{
int n = nums. size ( ) ;
if ( n == 0 )
return 0 ;
if ( n == 1 )
return nums[ 0 ] ;
vector< int > dp ( n, 0 ) ;
dp[ 0 ] = nums[ 0 ] ;
dp[ 1 ] = max ( nums[ 0 ] , nums[ 1 ] ) ;
bool stoleFlag = 0 ;
if ( dp[ 1 ] == nums[ 1 ] )
stoleFlag = 1 ;
for ( int i = 2 ; i < n; ++ i)
{
if ( stoleFlag == 0 )
{
dp[ i] = dp[ i - 1 ] + nums[ i] ;
stoleFlag = 1 ;
}
else
{
if ( nums[ i] > nums[ i - 1 ] )
{
dp[ i] = max ( dp[ i - 1 ] - nums[ i - 1 ] + nums[ i] , dp[ i - 2 ] + nums[ i] ) ;
stoleFlag = 1 ;
}
else
{
dp[ i] = dp[ i - 1 ] ;
stoleFlag = 0 ;
}
}
}
return dp[ n - 1 ] ;
}
} ;
class Solution {
public:
int rob ( vector< int > & nums)
{
int n = nums. size ( ) ;
if ( n == 0 )
return 0 ;
if ( n == 1 )
return nums[ 0 ] ;
int shang_shang_jia = nums[ 0 ] ;
int shang_yi_jia = max ( nums[ 0 ] , nums[ 1 ] ) ;
int ans = shang_yi_jia;
for ( int i = 2 ; i < n; ++ i)
{
if ( shang_yi_jia == shang_shang_jia)
ans = shang_yi_jia + nums[ i] ;
else
ans = max ( shang_yi_jia , shang_shang_jia + nums[ i] ) ;
shang_shang_jia = shang_yi_jia;
shang_yi_jia = ans;
}
return ans;
}
} ;
class Solution {
public:
int rob ( vector< int > & nums)
{
int n = nums. size ( ) ;
if ( n == 0 )
return 0 ;
if ( n == 1 )
return nums[ 0 ] ;
int shang_shang_jia = nums[ 0 ] ;
int shang_yi_jia = max ( nums[ 0 ] , nums[ 1 ] ) ;
int ans = shang_yi_jia;
for ( int i = 2 ; i < n; ++ i)
{
ans = max ( shang_yi_jia , shang_shang_jia + nums[ i] ) ;
shang_shang_jia = shang_yi_jia;
shang_yi_jia = ans;
}
return ans;
}
} ;