human
Minimum time to finish tasks without skipping two consecutive | arr [ ] represents time taken by n given tasks.
Corner Cases.
Initialize value for the case when there is only one task in task list . First task is included.
First task is exluded.
Process remaining n - 1 tasks.
Time taken if current task is included There are two possibilities ( a ) Previous task is also included ( b ) Previous task is not included.
Time taken when current task is not included . There is only one possibility that previous task is also included ..
Update incl and excl for next iteration.
Return maximum of two values for last task.
Driver code"
How can the above be solved in Python?
assistant
#Here is code to minimum time to finish tasks without skipping two consecutive and the other steps required.
 def minTime ( arr , n ) :
	if ( n <= 0 ) : return 0
incl = arr [ 0 ]
excl = 0
	for i in range ( 1 , n ) :
		incl_new = arr [ i ] + min ( excl , incl )
		excl_new = incl
		incl = incl_new
		excl = excl_new
	return min ( incl , excl )
arr1 = [ 10 , 5 , 2 , 7 , 10 ]
n1 = len ( arr1 )
print ( minTime ( arr1 , n1 ) )
arr2 = [ 10 , 5 , 7 , 10 ]
n2 = len ( arr2 )
print ( minTime ( arr2 , n2 ) )
arr3 = [ 10 , 5 , 2 , 4 , 8 , 6 , 7 , 10 ]
n3 = len ( arr3 )
print ( minTime ( arr3 , n3 ) )